嵌入式每日八股3.12

为什么拷贝构造函数必须传引用不能传值?

因为传值会触发无限递归的调用,导致栈溢出或者程序崩溃

class MyClass {
public:
  MyClass(const MyClass& other) {
    //拷贝构造函数实现
  }
};

如果我们尝试传递一个MyClass对象作为参数来调用拷贝构造函数,例如:

MyClass obj1;
MyClass obj2 = obj1; //调用拷贝构造函数

如果拷贝构造函数采用值传递的方式,那么它会尝试复制obj1,这个过程中又会调用拷贝构造函数,而这个拷贝构造函数又会尝试复制obj1,以此类推,导致无限递归调用,最终程序崩溃。

【嵌入式八股】精华版(免费216问精华八股) https://www.nowcoder.com/creation/manager/columnDetail/0rOeJm

【嵌入式八股】一、语言篇https://www.nowcoder.com/creation/manager/columnDetail/mwQPeM

【嵌入式八股】二、计算机基础篇https://www.nowcoder.com/creation/manager/columnDetail/Mg5Lym

【嵌入式八股】三、硬件篇https://www.nowcoder.com/creation/manager/columnDetail/MRVDlM

【嵌入式八股】四、嵌入式Linux篇https://www.nowcoder.com/creation/manager/columnDetail/MQ2bb0

全部评论
这波分享满分
点赞
送花
回复
分享
发布于 03-14 21:36 广东

相关推荐

点赞 4 评论
分享
牛客网
牛客企业服务