加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 2个默认的拷贝构造函数:它可能吗?

发布时间:2020-12-16 10:06:01 所属栏目:百科 来源:网络整理
导读:以下计划是否格局不正确? struct Foo{ Foo(Foo) = default; Foo(const Foo) = default;};int main() {} 它成功compiles with clang++ 3.8.0 and g++ 6.3.0 (编译器标志是-std = c 11 -Wall -Wextra -Werror -pedantic-errors). 解决方法 为什么这应该是不正
以下计划是否格局不正确?

struct Foo
{
    Foo(Foo&) = default;

    Foo(const Foo&) = default;
};

int main() 
{
}

它成功compiles with clang++ 3.8.0 and g++ 6.3.0(编译器标志是-std = c 11 -Wall -Wextra -Werror -pedantic-errors).

解决方法

为什么这应该是不正常的?您定义了两个复制构造函数,一个期望非const参数,另一个可以使用const参数.然后告诉编译器它应该使用它们对这两个构造函数的默认实现.除非编译器有理由消除默认的复制构造函数,否则您也可以删除这两行并获得相同的结果.另外我认为第一个版本是多余的,因为默认的实现应该可以使用const参数.仍然定义两者都是合法的,因为你可能想要在两种情况下做一些不同的事情.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读