You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何声明仅一个构造函数后,C++类却显示两个构造函数?

问题:未声明的构造函数是什么?

你编写的C++类代码如下:

class MyClass
{
private:
    PCWSTR _windowName{};
    PCWSTR _windowTitle{};

public:
    MyClass(PCWSTR wndName, PCWSTR wndTitle)
    {
        this->_windowName = wndName;
        this->_windowTitle = wndTitle;
    }
};

创建该类对象时,你发现存在两个构造函数,一个是你声明的带两个PCWSTR参数的构造函数,另一个是你未手动声明的构造函数。

那个未声明的构造函数是拷贝构造函数,它是C++编译器自动生成的特殊成员函数之一。

当类没有显式声明拷贝构造函数时,编译器会自动生成一个默认版本,函数签名大致为:

MyClass(const MyClass& other);

这个默认拷贝构造函数的作用是对类的成员变量执行浅拷贝——直接复制成员变量的值。针对你类中的PCWSTR(宽字符指针类型)成员,它会直接复制指针的地址,而非指针指向的字符串内容。

如果你的类涉及动态内存分配(比如自行管理字符串内存),这种浅拷贝可能引发诸如重复释放内存之类的问题,但在当前类的场景下,因为只是保存外部传入的指针,默认拷贝构造函数的行为符合编译器的默认逻辑。

内容的提问来源于stack exchange,提问作者Zombies are Real

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 15:47:45