CExemple A(848);//”CExemple“是一种类,A(848)是实例化“CExemple"并调用构造函数对自身初始化
CExemple B = A;//B用A进行初始化,在拷贝构造函数里B内变量获得和A内变量一样的值。
//CExemple B(A);//换了个形式,其实和上一行一样。
CExemple A;
test(A);//当A传入函数内时,函数会先创建一个临时变量temp,然后用A初始化temp(类似于"CExemple temp(A);",此时拷贝构造函数被调用。注:当test()函数完成后会析构掉temp。
CExemple test(){
CExemple A(345);
return A;//会先创建一个临时变量temp,然后进行"CExemple temp(A);",此时拷贝构造函数被调用。注:函数执行到最后,先析构A,函数完成后,才析构掉temp。
}
class A{
public:
int* value = new int;
A(const A& a){
int* value = new int;//申请新地址,解决浅拷贝问题
*value = *(a.value);//这一步是赋值运算,不对指针本身的地址值值进行操作。
}
}
const A a(88);
A a1(a);//错误
本文章使用limfx的vscode插件快速发布