0

以下代码:

#include <iostream>

using namespace std;

struct A {
    A(int a) { cout << "cast "; }
    A(const A& a) { cout << "copy " ;}
};

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

给出输出cast,而我预计输出是:cast copy。是编译器优化,还是对正在发生的事情的简单误解?

提前致谢!

4

1 回答 1

0

这里发生了 通过构造函数从intto的隐式转换。AA(int i)

所以,我猜,编译器做了一些优化。

如果您explicit对第一个构造函数使用关键字,它将无法编译。

于 2013-07-26T11:30:42.903 回答