c++中的关于继承的问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 04:01:59
#include "iostream.h"
class A{
public:
A();
void ouputmessage();
protected:
int a;
int b;
};
A::A(){
a = 10;
b = 11;
}
void A::ouputmessage(){
cout<< a<<endl;
cout<<b<<endl;
}
class B :A{
public:
B();

};
B::B(){
a = 20;
b = 21;
}
void main(){
B tt;
tt.ouputmessage();
}
这个程序存在问题,在此向高手请教一下

class B:A
没加修饰符的话,默认采用私有继承,当然无法继承A中的成员方法.
改成
class B:public A

/*
修改以后的代码如下
*/
#include <iostream> //需要用<>包围
using namespace std; //需要打开std
class A{
public:
A();
void ouputmessage();
protected:
int a;
int b;
};
A::A(){
a = 10;
b = 11;
}
void A::ouputmessage(){
cout<< a<<endl;
cout<<b<<endl;
}
class B :public A{ //用public才可以访问ouputmessage
public:
B();

};
B::B(){
a = 20;
b = 21;
}
int //c++的main需要返回int
main(int argc,char *argv){
B tt;
tt.ouputmessage();
return 0;
}

class B:A 这是默认的继承,为 private 继承,
私有继承 父类的 public protected 成员成为子类的 private 成员
所以 main 中 tt.outputmessage() 是错误的,因此此时 outputmessage成为 class B的 private member function。
修改成
class B: public A 即可。