2013-06-18 42 views
0

在這兩個程序中,第二個程序工作但第一個程序不能編譯。這怎麼可能?唯一的區別是在版本二中,bar是一個指針,在版本一中它不是。C++調用父函數僅在使用指針時才起作用

版本之一:(不編譯)

#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(); 
} 
+2

另一個最令人頭疼的解析問題... – 2013-06-18 18:00:45

+0

爲什麼downvotes?非常公平的問題和非常好的研究。對於這種情況,谷歌並不太容易。 – djechlin

+0

這就是說你需要發佈你的錯誤信息。理想情況下,谷歌,看看有什麼會導致它。 – djechlin

回答

11
Bar bar(); 

是函數的聲明。

​​

是你的朋友。