gpt4 book ai didi

c++ - 复制构造函数是否调用默认构造函数来创建对象

转载 作者:搜寻专家 更新时间:2023-10-31 02:19:56 24 4
gpt4 key购买 nike

在 C++ 中创建对象时,复制构造函数是否调用默认构造函数?如果我隐藏默认构造函数,我应该仍然能够创建拷贝,对吧?

最佳答案

答案是否定的

对象内存的创建是通过new 指令完成的。然后复制构造函数负责实际的复制(显然只有当它不是浅拷贝时才相关)。

如果需要,您可以在复制构造函数执行之前显式调用不同的构造函数。

您可以通过复制/粘贴此代码并运行它来轻松地对其进行测试...

#include <stdio.h>

class Ctest
{
public:

Ctest()
{
printf("default constructor");
}

Ctest(const Ctest& input)
{
printf("Copy Constructor");
}
};


int main()
{
Ctest *a = new Ctest(); //<-- This should call the default constructor

Ctest *b = new Ctest(*a); //<-- this will NOT call the default constructor
}

关于c++ - 复制构造函数是否调用默认构造函数来创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33302513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com