关于c ++继承的一个例子

时间:2018-03-31 11:26:05

标签: c++ inheritance

以下是关于继承的问题。

class A { 
public: 
    virtual string F() = 0;
};

class B: public A {
public: 
    string F() {
        return "B";
    }
};

int main() {
    B b; 
    A* ap = &b;
    cout << b.F() << ap->F();
    return 0;
}

有谁能告诉我为什么这段代码不能编译?

2 个答案:

答案 0 :(得分:2)

您需要包含定义string类型和cout流的标头,这些标头都位于std命名空间中:

#include <iostream>
#include <string>

using namespace std;

class A {
  public:virtual string F()=0;
};

class B: public A {
  public: string F() {
              return "B";
          }
};

int main(){
  B b; A* ap=&b;
  cout<<b.F()<<ap->F();
  return 0;
}

答案 1 :(得分:0)

您需要在std命名空间的代码开头包含头文件。

gist
相关问题