C++深度解析 对象的构造(下)---无参构造函数,拷贝构造函数,深拷贝,浅拷贝(18)
特殊的构造函数
无参构造函数
当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空。
//经典的面试题,这个类里面有什么东西
//空类,里面至少有一个无参构造函数,编译器提供
class T
{
/*
T()
{
}
*/
};
拷贝构造函数
参数为const class_name& 的构造函数。当类中没有定义拷贝构造函数时,编译器默认提供一个拷贝构造函数,简单的进行成员变量的值复制。
示例程序:(特殊的构造函数)
#include <stdio.h>
class Test
{
private:
int i;
int j;
public:
int getI()
{
return i;
}
int getJ()
{
return j;
}
//拷贝构造函数,浅拷贝
Test(const Test& t)
{
i = t.i;
j = t.j;
}
//有参构造函数
Test()
{
}
};
int main()
{
//创建类对象,必须调用构造函数,默认提供无参构造函数
Test t1;
Test t2 = t1; //触发拷贝构造函数Test(const Test& t),等价于Test t2(t1);
printf("t1.i = %d, t1.j = %d\n", t1.getI(), t1.getJ());
printf("t2.i = %d, t2.j = %d\n", t2.getI(), t2.getJ());
return 0;
}
结果如下: