class Timer {
public:
Timer();
};
class TimeKeeper {
public:
TimeKeeper(const Timer& t);
int get_time()
{
return 1;
}
};
int main() {
TimeKeeper time_keeper(Timer());
return time_keeper.get_time();
}
从外观上来看,它应该得到编译错误,由于行:
TimeKeeper time_keeper(Timer());
但如果return time_keeper.get_time();
出现时,它才会发生。
为什么这条线甚至有问题,编译器会在time_keeper(Timer())
构造中发现模糊性。
的可能重复(http://stackoverflow.com/questions/3810570/why-is-没有调用的构造函数) – Mark 2013-03-08 18:55:30