在这两个程序中,第二个程序可以工作,但第一个程序不能编译。怎么可能?唯一的区别是,在版本2中,bar是指针,在版本1中,它不是。
第一版:(不编译)
#include <iostream>
class Foo{
public:
void print(){
std::cout << "asdasd" << std::endl;
}
};
class Bar : public Foo{
};
int main(){
Bar bar();
bar.print();
}
第二个版本:
#include <iostream>
class Foo{
public:
void print(){
std::cout << "asdasd" << std::endl;
}
};
class Bar : public Foo{
};
int main(){
Bar* bar = new Bar();
bar->print();
}
答案 0 :(得分:11)
Bar bar();
是函数的声明。
Bar bar;
是你的朋友。