0

これら 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();
}
4

1 に答える 1

11
Bar bar();

関数の宣言です。

Bar bar;

あなたの友達です。

于 2013-06-18T17:58:27.420 に答える