拷贝构造函数是一种特殊的构造函数,具有一般的构造函数的特性。其作用是使用一个已经存在的对象(由拷贝构造函数的参数决定)去初始化同类的一个新对象,实现同类对象间的数据成员的传递。若coder or prgrammer没有自己定义一个拷贝构造函数,那么编译器就会自己为他们定义一个拷贝构造函数(其实像 构造函数,析构函数,copy assignment函数这些函数如果程序员没有自己定义的话,编译器就会产生默认的浙西函数)。而默认的拷贝构造函数的功能是,把初始值对象的每个数据成员的值都复制到新建立的对象之中。
构造函数的声明形式:
class 类名{
public:
类名(形参表) ;
类名(类名 &形参表);
};
实现:
类名::类名(类名 &形参表)
{
函数体;
}
普通的构造函数是在对象建立的情况下就被调用,而拷贝构造函数就不一样;一般是在以下三种情况下被调用:
1:当用类的一个对象去初始化该类的另一个对象时 ;
int main{
Point A(1,2);
Point B(A);
cout<<B.Get()<<endl;
return 0;
}
2:如果函数的形参是类的对象,调用函数时,进行时参和形参的结合时;
void f(Point A)
{
cout<<A.Get()<<endl;
};
int main()
{
Point A(1,2);
f(A);
}
3:如果函数的返回值是类的对象,函数执行完后返回调用者;
Point g()
{
Point A(1,2);
return A;
}
int main()
{
Point B;
B=g();
}