gpt4 book ai didi

c++ - 默认复制构造函数和复制赋值赋值运算符给出奇怪的错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:04 25 4
gpt4 key购买 nike

我已经默认了我的复制构造函数和复制赋值运算符如下:

  Config(const Config& config) = default;
Config& operator=(const Config& rhs) = default;

然后通过友元将这些功能授予独立功能。创建配置对象的拷贝后,我收到以下警告和注释(?):

./cfg/config.hpp:129:3: warning: unused parameter 'config' [-Wunused-parameter] cfg/get.cpp: In function 'const cfg::Config& cfg::Get(bool)': cfg/get.cpp:34:30: note: synthesized method 'cfg::Config::Config(const cfg::Config&)' first required here

看起来复制构造函数甚至没有被实例化。尽管如此,代码似乎仍在运行。

gcc 版本 4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu5)

最佳答案

只需省略参数:

Config(const Config&) = default;
Config& operator=(const Config&) = default;

上述语句指示编译器生成指定类型的默认特殊成员函数,但未指定这些实现的细节。参数名称是多余的,没有任何作用。编译器可以自由地对合法代码发出警告。

来自§8.4.2:

... A function that is explicitly defaulted shall

— be a special member function,

— have the same declared function type (except for possibly differing ref-qualifiers and except that in the case of a copy constructor or copy assignment operator, the parameter type may be “reference to non-const T”, where T is the name of the member function’s class) as if it had been implicitly declared ...

关于c++ - 默认复制构造函数和复制赋值赋值运算符给出奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12793412/

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