C/C++:拷贝构造函数

拷贝构造函数是一种特殊的构造函数,因为它也是用来构造对象的。它具有构造函数的所有特性。拷贝构造函数的作用是用一个已经存在的对象去初始化另一个对象,这两个对象的类类型应该是一样的。定义拷贝构造函数的形式是:

class 类名
       {
        public :
                   类名(形参);                    //构造函数
                   类名(类名 &对象名);   //拷贝构造函数
           ...
       };
       类名::类(类名 &对象名)    //拷贝构造函数的实现
       {  
                 函数体   
       }

拷贝构造函数的形参是本类的对象的引用。

拷贝构造函数在以下三种情况下会被调用:

a.当用类的一个对象去初始化该类的另一个对象时系统自动调用拷贝构造函数实现拷贝赋值

int main()
       { 
                Point A(1,2);
                Point B(A); //拷贝构造函数被调用
                cout<<B.GetX()<<endl;
                return 0;
       }

b.若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数。例如:

void fun1(Point p)
       {  
                cout<<p.GetX()<<endl;
       }
       int main()
       {  
               Point A(1,2);
               fun1(A); //调用拷贝构造函数
               return 0;
       }    

c.当函数的返回值是类对象时,系统自动调用拷贝构造函数。例如:

Point fun2()
       {   
              Point A(1,2);
              return A; //调用拷贝构造函数
       }
       int main()
       {
             Point B;
             B=fun2();
             return 0;
       }

转载于:https://www.cnblogs.com/lucas-hsueh/p/3734257.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值