これら 2 つのプログラムのうち、2 番目のプログラムは機能しますが、最初のプログラムはコンパイルされません。そんなことがあるものか?唯一の違いは、バージョン 2 では bar がポインターであり、バージョン 1 ではポインターではないことです。
バージョン 1: (コンパイルしません)
#include <iostream>
class Foo{
public:
void print(){
std::cout << "asdasd" << std::endl;
}
};
class Bar : public Foo{
};
int main(){
Bar bar();
bar.print();
}
そして2番目のバージョン:
#include <iostream>
class Foo{
public:
void print(){
std::cout << "asdasd" << std::endl;
}
};
class Bar : public Foo{
};
int main(){
Bar* bar = new Bar();
bar->print();
}