1、调用情况
#include <iostream>
using namespace std;
class stu
{
public:
stu()
{
}
stu(const stu& a)//默认拷贝构造(浅拷贝),与普通构造函数不同他会执行
{
}
};
//以下两种函数也可以调用copy构造函数
void fun(stu a)//函数参数传递对象的值
{
}
stu fun()//函数返回对象
{
stu db;
return db;//返回一个临时构造函数
}
int main()
{
stu db;
//stu db1(db);
//stu db1= db;
//stu db1=stu(db);
//stu* db1 = new stu(db);//同类现有对象,只有对象初始化(赋值)才会调用拷贝构造
//fun(db)
fun();
system("pause");
return 0;
}
2、功能:逐个复制非静态成员(成员的复制为浅复制)值,复制的是成员的值。
#include <iostream>
using namespace std;
class stu
{
public:
int b;
char c[4];
stu()//模仿默认构造函数也是浅拷贝
{
b = 12;
c[0] = 'a';
strcpy_s(c,4, "bcd");//strcpy_s(c,4,"bcd");
}
stu(const stu& a)//拷贝构造
{
this->b = a.b;
strcpy_s(this->c, 4, a.c);
}
};
int main()
{
stu db;
cout << db.b << " " << db.c << endl;
stu db1(db);
cout << db1.b << " " << db1.c << endl;
system("pause");
return 0;
}