c++为什么使用拷贝构造函数?

不得不说C ++是一个广阔的海洋的存在,它剖析后真的全是哲理!!!

首先我们说说C ++的6个默认函数:默认构造,默认析构,拷贝构造,取值运算,常量常量取值,赋值运算符。

************************************************** ************************************************** 

那我们就简单说说拷贝构造函数,,,为什么要有它的存在呢?

开始我以为有没有它无所谓呀?反正平常也不用,其实大错特错了。一般我们给类初始化的时候使用构造函数,

当我们传值,传地址,或者说引用的时候,我们以为没有用拷贝构造函数,其实是系统默认创造了一个备份,

当我们改变构造的对象时候,我们总是以为对象本质没有改变?其实是改变了,只不过有拷贝构造的存在,所以

对象的值不会改变,而它的定义时常量所以不会改变。

************************************************** **************************************************


#include <iostream>
using namespace std;
  
class Example  
{  
    int m_nTest;  
public:  
      
    Example(int x):m_nTest(x) //带参数构造函数   
    {   
       cout << "构造"<<endl;  
    }  
      
    Example(const Example & ex) //拷贝构造函数   
    {  
        m_nTest = ex.m_nTest;  
        cout << "拷贝构造"<<endl;  
    }  
      
    Example& operator = (const Example &ex)//赋值函数(赋值运算符重载)   
    {     
        cout << "赋值"<<endl;  
        m_nTest = ex.m_nTest;  
        return *this;  
    }  
      
    void myTestFunc(Example ex)  
    {  
    }  
};  
  
int main()  
{  
    Example aaa(2);   //构造
    Example bbb(3);  	//构造
    bbb = aaa;  	//赋值 因为bbb实例了 
    Example ccc = aaa;  //拷贝构造
    bbb.myTestFunc(aaa);  //拷贝构造,注意!这也是为什么拷贝构造使用参数为引用 为了防止它无限的拷贝构造!
    system("pause");}  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值