加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 使用复制构造函数有什么好处?

发布时间:2020-12-16 10:11:53 所属栏目:百科 来源:网络整理
导读:我是面向对象编程的新手,这可能是一个愚蠢的问题,但是如果你想创建一个对象的副本,我不明白为什么使用A类代码比使用B类更好. class A { int num;public: A(const A ref) : num(ref.num) {};};class B { int num;public: B(B *ptToClass) : num(ptToClass-num
我是面向对象编程的新手,这可能是一个愚蠢的问题,但是如果你想创建一个对象的副本,我不明白为什么使用A类代码比使用B类更好.

class A {
    int num;
public:
    A(const A &ref) : num(ref.num) {};
};

class B { 
    int num;
public:
    B(B *ptToClass) : num(ptToClass->num) {};
};

如果我做对了,复制构造函数用在A类中.

解决方法

A类灵活且安全:您可以从任何A对象创建副本,即使它是临时对象.

B类安全性较低,因为您可以使用nullptr调用构造函数.它不太灵活,因为你只能使用ypur构造函数来复制一个对象,你可以从中获取地址,而不是const.

B b1(...);        
const B b2(...); 
B fb();        // function returning a B

B b3(&b1);      
B b4(&b2);     // error b2 is const
B b5(&fb());   // error you can't take adress of a temporary

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读