int a=100; int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。
#include <iostream> using namespace std; class CA { public: CA(int b) { a=b; } void Show () { cout<<a<<endl; } PRivate: int a; };
int main() { CA A(100); CA B=A; B.Show (); return 0; } 运行程序,屏幕输出100。从以上代码的运行结果可以看出,系统为对象B分配了内存并完成了与对象A的复制过程。就类对象而言,相同类型的类对象是通过拷贝构造函数来完成整个复制过程的。下面我们举例说明拷贝构造函数的工作过程。
#include <iostream> using namespace std; class CA { public: CA(int b) { a=b; } CA(const CA& C) { a=C.a; } void Show() { cout<<a<<endl; } private: int a; };
int main() { CA A(100); CA B=A; B.Show (); return 0; } CA(const CA& C)就是我们自定义的拷贝构造函数。可见,拷贝构造函数是一种非凡的构造函数,函数的名称必须和类名称一致,它的唯一的一个参数是本类型的一个引用变量,该参数是const类型,不可变的。例如:类X的拷贝构造函数的形式为X(X& x)。