copy-initialization相关内容

复制初始化的奇怪行为,不调用复制构造函数!

我正在阅读直接初始化和复制初始化之间的区别(第 8.5/12 节): T x(a);//直接初始化T y = a;//复制初始化 我从阅读 copy-initialization 是它需要 可及性非显式复制构造函数,否则程序将无法编译.我通过编写以下代码验证了它: 结构 A{诠释我;A(int i) : i(i) { std::cout ..

复制初始化:即使关闭了复制删除功能,为何仍未调用move或copy构造函数?

我的问题有所不同,因为我可能“知道"复制删除.我正在学习复制初始化.但是,以下代码使我感到困惑,因为我已经使用-fno-elide-contructors -O0选项关闭了复制删除功能. #include using namespace std; class test{ public : test(int a_, int b_) : a{a_}, b{b_} { ..

复制初始化的奇怪行为,不会调用复制构造函数!

我正在阅读直接初始化和复制初始化之间的区别(第8.5 / 12节): T x(一种); //直接初始化 T y = a; //复制初始化 我从阅读复制初始化中的差异在于它需要可访问的&非明确的复制构造器,否则程序将无法编译。我通过编写以下代码进行了验证: 结构A { int i; A(int i):i(i){std :: cout ..

C ++(11):何时使用直接或复制初始化,如果两者都完美

在重复开始之前:我知道以下问题(以及其他一些)与这个问题很相关: 复制初始化和直接初始化之间的C ++有什么区别? / a> 这个问题的答案完全解释了复制初始化不可能的情况,并解释了两者之间的区别。但是,我的问题更微妙: 请考虑代码: A createA(){...} A a1 = createA(); A a2(createA()); 假设A ..
发布时间:2016-11-06 03:33:19 C/C++开发

为什么在使用初始化语法时未调用转换运算符,为什么clang错误消息似乎错误?

我有以下代码,它使用显式转换构造函数构造一个对象t2,该函数执行t1的隐式转换。这是预期的,并且在第三版的11.4.1节中的C ++编程语言中进行了描述。 #include< ; iostream> #include using namespace std; class test1 { public: test1(){} operator st ..
发布时间:2016-10-27 23:54:54 C/C++开发

这不是复制初始化,还是?

在下面的代码中,我不允许声明一个显式 ctor,因为编译器说我正在使用它在一个 copy-initializing 上下文(clang 3.3和gcc 4.8 )。 我试图证明编译器错误,使ctor不显式,然后声明复制构造函数删除。 编译器是错误的,还是有任何其他 #include template struct xyz ..
发布时间:2016-10-17 10:20:18 C/C++开发

复制列表初始化在概念上调用copy ctor吗?

在C ++ 11之前,我们可以通过编写类似 A a = 1; 的复制初始化,它大致等同于 A a = A(1); 。也就是说,首先创建临时,然后调用复制ctor。无论复制精度如何,这必须是概念上的,并且复制ctor必须可访问。 在C ++ 11中的列表初始化时,我们可以通过写 A a = {1,2}; 。在我看来,这应该或多或少等价于 A a = A(1,2); 。然而,在GCC和clang ..

什么时候应该使用直接初始化和复制初始化?

它只是偏好还是有特定的情况下,一个是必要的?我参考以下变量进行初始化 T t(e); //直接初始化 T t = e; //复制初始化 解决方案 describe不是隐式和显式赋值,但是: 复制初始化: T x = a; 直接初始化: T x(a); 它们是不等效的,特别是在需要转换的上下文中,例如 T 类类型和 a 是一个不同 ..