隐藏的构造函数
构造函数是C++类默认的一个函数,在很多情况下编译器会对这些默认的构造函数做一些处理,如果不清楚这些处理的话,可能就会出现一些问题。
先看一下下面这段代码:
#include <iostream>
using namespace std;
class demo{
public:
// :num为初始化成员指针使用,一般用于初始化const变量。
demo():num(new int(0)){
cout<<"construct!"<<endl;
}
//拷贝构造函数
demo(const demo &d):num(new int(*d.num)){
cout<<"copy construct!"<<endl;
}
~demo(){
cout<<"class destruct!"<<endl;
}
private:
int *num;
};
demo get_demo(){
return demo();
}
int main(){
demo a = get_demo();
return 0;
}
-
代码中显式的定义了一个构造函数,一个拷贝构