为什么不调用临时对象构造函数?

时间:2020-07-28 18:51:01

标签: c++

请查看下面的代码:

#include <iostream>
using namespace std;
struct A{
    A(char* str) { cout << "default called" << endl; }
    A(const A &a) { cout << "copy called" << endl; }
};
int main() {
    A obj  = "str";
}

输出为:

default called

为什么当我初始化对象时,临时对象的构造函数不被称为? 不

A obj  = "str";

变成

A obj = A("str") // so why consturctor of temprorary object isnt called ?? 

???

我对复制省略有点了解,为什么obj的复制构造函数没有被调用 但是为什么临时对象的cosntructor不是???? p

谢谢!

1 个答案:

答案 0 :(得分:-2)

通过赋值创建对象时,C ++将其视为构造函数调用。