编程论坛
注册
登录
编程论坛
→
C++教室
构造函数和析够够函数
wxm198427
发布于 2008-10-24 12:01, 1115 次点击
构造函数和析构函数的作用是什么?什么时候需要自己定义构造函数和析构函数?
9 回复
#2
blueboy82006
2008-10-24 12:15
构造函数最主要作用就是生成对象和初始化对象。
析构函数的作用与构造函数作用相反,但最主要作用是在对象要完成生命周期时完成清理性工作。
我们几乎总是定义自己的构造函数。。。毕竟,我们要实现自己定义的初始化嘛。。。
那么,由三法则就显然也总要定义相应的析构函数了。。。
其实,你在不知道它们要干什么时,定义体为空就好。。。
#3
newyj
2008-10-24 12:19
构造函数 主要是 分配空间 和初始化对象
析构函数 与 构造函数相反
#4
wxm198427
2008-10-24 13:47
[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;
}
以上这段程序没有错误,哥们帮我解释在这个程序中怎么就叫做生成对象??真搞不懂,我是菜鸟,请指点…………
#5
xmnathan
2008-10-24 14:13
构造函数一般是用来放置定义类中的变量及其初始化的
析构就是把这些定义出来的 特别是指针类型的变量销毁
其他用处雷同
#6
wxm198427
2008-10-24 14:18
[bo][un]xmnathan[/un] 在 2008-10-24 14:13 的发言:[/bo]
构造函数一般是用来放置定义类中的变量及其初始化的
析构就是把这些定义出来的 特别是指针类型的变量销毁
其他用处雷同
用来放置定义类中的变量
??那哥们帮我看看上面的程序,你说它是怎么放置的??我不懂…………
#7
newyj
2008-10-24 16:33
就是在主函数中 Time t1;实例化是 隐式调用 在类中定义的 构造函数
Time( )
{hour=0;
minute=0;
sec=0;
}
#8
wxm198427
2008-10-24 16:35
噢,谢谢哥们
#9
中学者
2008-10-24 18:07
LS的说得貌似都有问题...
构造函数只负责实例化对象(注意: 不一定是初始化,除非你用了初始化列表)..而对象的分配工作是编译器做的..
class A
{
public:
A() { i=2; } //如果调用它,那么i是赋值行为
A(int i_): i(i_) {} //调用它,那么是初始化行为
private:
int i;
};
析构函数也不会销毁任何变量...它负责的是一些清理工作,例如动态内存的释放,不然就内存泄漏了...
由对象布局的知识我们可以知道,对于栈上分配的对象,也只不过是个集合,通过移动栈指针,就把该对象释放了...
关于构造和析构问题,貌似也有很多知识~~~
#10
newyj
2008-10-24 19:07
用初始化列表的好处 是用在 类类型方面 不用 再 调用构造函数了
而对于 内置类型 在初始化列表和在大括号中都是 一样的
1