0

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

1 回答 1

11
Bar bar();

is a declaration of a function.

Bar bar;

is your friend.

于 2013-06-18T17:58:27.420 回答