gpt4 book ai didi

c++ - 这两个 C++ 初始化器语法在语义上是否有所不同?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:43 26 4
gpt4 key购买 nike

假设以下代码是可以正确编译的合法代码,T 是类型名,x 是变量名。

语法一:

T a(x);

语法二:

T a = x;

这两个表达式的确切语义是否不同?如果是,在什么情况下?

如果这两个表达式确实具有不同的语义,我也很好奇标准的哪一部分讨论了这一点。

此外,如果 T 是标量类型的名称(也称为 intlongdouble,等等...),当 T 是标量类型与非标量类型时有什么区别?

最佳答案

是的。如果 x 的类型不是 T,则第二个示例扩展为 T a = T(x)。这要求 T(T const&) 是公开的。第一个示例不调用复制构造函数。

在检查了可访问性之后,就可以删除拷贝(正如 Tony 所指出的)。但是,在检查可访问性之前不能消除它。

关于c++ - 这两个 C++ 初始化器语法在语义上是否有所不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5064296/

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