| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1115 人关注过本帖
标题:构造函数和析够够函数
只看楼主 加入收藏
wxm198427
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:561
专家分:25
注 册:2008-6-30
结帖率:52.7%
收藏
 问题点数:0 回复次数:9 
构造函数和析够够函数
构造函数和析构函数的作用是什么?什么时候需要自己定义构造函数和析构函数?
搜索更多相关主题的帖子: 函数 构造 
2008-10-24 12:01
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
构造函数最主要作用就是生成对象和初始化对象。
析构函数的作用与构造函数作用相反,但最主要作用是在对象要完成生命周期时完成清理性工作。
我们几乎总是定义自己的构造函数。。。毕竟,我们要实现自己定义的初始化嘛。。。
那么,由三法则就显然也总要定义相应的析构函数了。。。
其实,你在不知道它们要干什么时,定义体为空就好。。。

2008-10-24 12:15
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
构造函数 主要是 分配空间 和初始化对象
析构函数 与 构造函数相反
2008-10-24 12:19
wxm198427
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:561
专家分:25
注 册:2008-6-30
收藏
得分:0 
[bo][un]blueboy82006[/un] 在 2008-10-24 12:15 的发言:[/bo]

构造函数最主要作用就是生成对象和初始化对象。
析构函数的作用与构造函数作用相反,但最主要作用是在对象要完成生命周期时完成清理性工作。
我们几乎总是定义自己的构造函数。。。毕竟,我们要实现自己定义的初始 ...



作用就是生成对象??不太懂,比方我下面的一段程序,你说他怎么就生成了对象?对象不是在下面定义的吗?
#include <iostream>
using namespace std;
class Time
{public:
Time( )                    
{hour=0;                 
minute=0;
sec=0;
}
void set_time( );           
void show_time( );         
private:
int hour;                  
int minute;
int sec;
};
void Time::set_time( )      
{cin>>hour;
cin>>minute;
cin>>sec;
}
void Time::show_time( )        
{
 cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
int main( )
{
Time t1;                  
t1.set_time( );            
t1.show_time( );            
Time t2;                  
t2.show_time( );        
return 0;
}
以上这段程序没有错误,哥们帮我解释在这个程序中怎么就叫做生成对象??真搞不懂,我是菜鸟,请指点…………
2008-10-24 13:47
xmnathan
Rank: 2
等 级:论坛游民
威 望:1
帖 子:73
专家分:10
注 册:2008-8-30
收藏
得分:0 
构造函数一般是用来放置定义类中的变量及其初始化的
析构就是把这些定义出来的 特别是指针类型的变量销毁

其他用处雷同

唉 好难
2008-10-24 14:13
wxm198427
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:561
专家分:25
注 册:2008-6-30
收藏
得分:0 
[bo][un]xmnathan[/un] 在 2008-10-24 14:13 的发言:[/bo]

构造函数一般是用来放置定义类中的变量及其初始化的
析构就是把这些定义出来的 特别是指针类型的变量销毁

其他用处雷同



用来放置定义类中的变量
??那哥们帮我看看上面的程序,你说它是怎么放置的??我不懂…………
2008-10-24 14:18
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
就是在主函数中 Time t1;实例化是 隐式调用 在类中定义的 构造函数
Time( )                    
{hour=0;                 
minute=0;
sec=0;
}
2008-10-24 16:33
wxm198427
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:561
专家分:25
注 册:2008-6-30
收藏
得分:0 
噢,谢谢哥们
2008-10-24 16:35
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
LS的说得貌似都有问题...
构造函数只负责实例化对象(注意: 不一定是初始化,除非你用了初始化列表)..而对象的分配工作是编译器做的..
class A
{
 public:
    A() { i=2; }  //如果调用它,那么i是赋值行为
    A(int i_): i(i_) {}  //调用它,那么是初始化行为
 private:
   int i;
};
析构函数也不会销毁任何变量...它负责的是一些清理工作,例如动态内存的释放,不然就内存泄漏了...
由对象布局的知识我们可以知道,对于栈上分配的对象,也只不过是个集合,通过移动栈指针,就把该对象释放了...
关于构造和析构问题,貌似也有很多知识~~~

樱花大战,  有爱.
2008-10-24 18:07
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
用初始化列表的好处 是用在 类类型方面 不用 再 调用构造函数了
而对于 内置类型 在初始化列表和在大括号中都是 一样的
2008-10-24 19:07
快速回复:构造函数和析够够函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015407 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved