C ++调用父函数仅在使用指针时有效

时间:2013-06-18 17:57:02

标签: c++ inheritance

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

1 个答案:

答案 0 :(得分:11)

Bar bar();

是函数的声明。

Bar bar;

是你的朋友。