在这两个程序中,第二个可以工作,但第一个不能编译。这怎么可能?唯一的区别是在版本二中 bar 是一个指针,而在版本一中它不是。
版本一:(不编译)
#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();
}