Categories
软件工程 [4]
Archives
February 2008 |
C++构造函数的讨论guocongbin | 12/11 2005, 17:48
Comments0 Responses to “C++构造函数的讨论”Add comment |
假设有这样的一段代码:
#include<iostream>
class cls
{
public:
int _i;
cls(int i):_i(i){}
cls()
{
cls(0);
}
};
int main()
{
cls obj;
std::cout<std::endl;
return 0;
}
这段代码会不会输出一个0呢?答案是不会。因为在cls的默认构造函数中对于带有参数的构造函数的调用实际上是在执行一个新的对象的构造过程,构造的是一个无名的临时对象,当函数cls()执行结束,该对象也就会消失的。
在使用gdb调试这段代码的时候,我们就可以发现在执行cls()和cls(0)的时候,this指针的值是不同的。