码迷,mamicode.com
首页 > 编程语言 > 详细

c++——拷贝构造

时间:2017-10-01 22:01:08      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:++   color   nbsp   别名   logs   npc   name   种类   col   

    //拷贝构造: 用自身这种类型的对象来构造自身
    //拷贝构造是一种特殊的构造函数,和普通构造函数不同就只有参数
    //拷贝构造有默认的,类中不写,系统就会给默认的。默认的拷贝构造有代码操作的
    //什么时候要重写默认的构造函数,类中成员有指向堆区数据时就要重写

    int a = 0;

    CMyNpc n;
    CMyNpc m1 = n; //隐式拷贝构造的调用方式

    CMyNpc m2(m1); //显示拷贝构造的调用方式

    CMyNpc m3;
    m3 = m2;    //这不是拷贝构造的调用


    //cpp类中
    CMyNpc();
    CMyNpc(int h);
    CMyNpc(int h, int m);
    CMyNpc(CMyNpc const& other); //CMyNpc(CMyNpc n);将构成无限循环;;;
                                 //CMyNpc(CMyNpc * other);因为改变了类型,所以不是拷贝构造;;;
                                 //CMyNpc(CMyNpc const& other);引用是起了个别名,为拷贝构造,常用other定义
    CMyNpc::CMyNpc(CMyNpc const& other)
    {
        hp = other.hp;
        mp = other.mp;
        name = NULL;
        if(other.name)
        {
            int len = strlen(other.name) + 1;
            name = new char[len];
            strcpy(name, other.name);
        }
    }

 

c++——拷贝构造

标签:++   color   nbsp   别名   logs   npc   name   种类   col   

原文地址:http://www.cnblogs.com/ming-michelle/p/7617800.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!