相关疑难解决方法(0)

等号是否会对括号初始化产生影响?例如.'T a = {}'vs'T a {}'

以下是在C++ 11中初始化变量的两种方法:

T a {something};
T a = {something};
Run Code Online (Sandbox Code Playgroud)

我在所有可以想到的场景中测试了这两个,但我没有发现差异.这个答案表明两者之间存在细微差别:

对于变量,我在这些T t = { init };或T t { init };样式之间没有太多关注,我发现差异很小,最坏的情况只会导致有关滥用显式构造函数的有用的编译器消息.

那么,两者之间有什么区别吗?

c++ initialization c++11 list-initialization

29
推荐指数
1
解决办法
1281
查看次数

我们可以通过函数的值返回具有已删除/私有复制/移动构造函数的对象吗?

在C++ 03中,不可能通过值返回具有私有非定义复制构造函数的类的对象:

struct A { A(int x) { ... } private: A(A const&); };

A f() {
  return A(10); // error!
  return 10;    // error too!
}
Run Code Online (Sandbox Code Playgroud)

我想知道,这个限制是否在C++ 11中解除了,是否可以编写具有类类型返回类型的函数,而没有用于复制或移动的构造函数?我记得允许函数的调用者使用新返回的对象可能很有用,但是他们无法复制值并将其存储在某处.

c++ copy-constructor c++11

16
推荐指数
3
解决办法
2787
查看次数