C++构造函数,析构函数。的一个小问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 04:59:41
//Hello 是个类
Hello a;//调用构造函数
Hello b=a;//没有调用构造函数

问题1:那么第2行有没有分配内存空间呢
程序结束之时
我发现两个对象销毁都调用了析构函数
问题2:为什么b没有进行构造也要
析构呢?

其实第二句调用了一个隐式构造函数
你可以写一个构造函数:
Hello(Hello &a){
printf("Hello b = a;");
}
你会看到其实第二句调用了这个函数

这应该是当用对象初始化新对象用到了复制构造函数的。
对于任何一个类,如果程序员没有显式的为其定义一个复制构造函数,C++编译器都会自动生成一个形如x::x(const x &)的缺省复制构造函数。