gpt4 book ai didi

c++ - `A a = A()` 有效吗?下面调用了哪些运算符/方法?

转载 作者:太空狗 更新时间:2023-10-29 20:08:15 26 4
gpt4 key购买 nike

给定以下代码:

#include <iostream>

class A {
public:
int x;

public:
A() : x(0) { std::cout << "ctor" << std::endl; }
A(const A& o) : x(o.x) { std::cout << "copy ctor" << std::endl; }
A& operator=(const A& o) { x = o.x; std::cout << "copy asgnmt" << std::endl; return *this; }
};

int main() {
A a = A();
return 0;
}

以上代码在 Ubuntu 14.04 上符合 g++ 4.8.4:

g++ -g -o test test.cpp

并输出:

ctor

A a = A(); 是否符合 C++ 标准?或者这只是 UB 因此依赖于编译器?如果该代码符合标准,那么在下面调用了哪些方法? A() 应该什么都不返回,不是吗?

最佳答案

A() 执行 value initialization ,它创建了一个无名的临时对象。

A a = A();copy initialization , a 从上面的临时文件中初始化。从输出可以看出,这里直接使用了A的默认构造函数来初始化a,因为copy elision .

关于c++ - `A a = A()` 有效吗?下面调用了哪些运算符/方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55756338/

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