我从这里得到了代码.
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();
}
Run Code Online (Sandbox Code Playgroud)
从它的外观来看,由于该行应该会出现编译错误:
TimeKeeper time_keeper(Timer());
Run Code Online (Sandbox Code Playgroud)
但只有在return time_keeper.get_time();存在的情况下才会发生 .
为什么这条线甚至很重要,编译器会发现time_keeper(Timer() )构造上的含糊不清.
我试图重载() operator接受a long,代码在下面.
struct print{
void operator()(long x){
printf("Number: %d\n",x);
}
};
Run Code Online (Sandbox Code Playgroud)
但是,当我这样写:
print p();
long l = 10;
p(l);
Run Code Online (Sandbox Code Playgroud)
编译器在对应的行上大喊"错误:函数调用中的参数太多" p(l);
为什么这不起作用,我() operator是否正确超载?