goj*_*oji 4 c++ constructor compiler-errors c++11
我已经默认了我的复制构造函数和复制赋值运算符,如下所示:
Config(const Config& config) = default;
Config& operator=(const Config& rhs) = default;
Run Code Online (Sandbox Code Playgroud)
然后通过友谊获得了对这些功能的访问权限.在创建配置对象的副本后,我收到以下警告并注意(?):
./cfg/config.hpp:129:3:警告:未使用的参数'config'[-Wunused-parameter] cfg/get.cpp:在函数'const cfg :: Config&cfg :: Get(bool)'中:cfg/get.cpp:34:30:注意:这里首先需要合成方法'cfg :: Config :: Config(const cfg :: Config&)'
看起来复制构造函数甚至没有被实例化.尽管如此,代码似乎运行.
gcc版本4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu5)
只需省略参数:
Config(const Config&) = default;
Config& operator=(const Config&) = default;
Run Code Online (Sandbox Code Playgroud)
上述语句指示编译器生成所述类型的默认特殊成员函数,但未指定这些实现的详细信息.参数名称是多余的,无效.编译器可以自由发出合法代码的警告.
从§8.4.2开始:
......明确默认的函数应该
- 成为特别会员,
- 具有相同的声明函数类型(可能不同的ref限定符除外,在复制构造函数或复制赋值运算符的情况下,参数类型可以是"引用非const T",其中T是名称成员函数的类)就像它已被隐式声明一样......
| 归档时间: |
|
| 查看次数: |
640 次 |
| 最近记录: |