请查看下面的代码:
#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
谢谢!
答案 0 :(得分:-2)
通过赋值创建对象时,C ++将其视为构造函数调用。