2 回答

TA貢獻1982條經驗 獲得超2個贊
class A
//A類聲名
{
public:
//公共成員
void virtual read()
//read的虛函數
{
cout<<"base class A";
//輸出“base class A”
}
};
class B:public A
//B類聲名,繼承A
{
public:
void read()
//重寫read(必須重寫,因為前面是虛函數)
{
cout<<"derived class B";
//輸出“derived class B”
}
};
int main()
//主程序進入
{
B obj();
//建立B類的obj對象
clrscr();
//調用clrscr(你給的代碼里沒有這個的聲名)
obj.read();
//調用obj對象的read對象
getch();
}
//以下部分全是你本來有的注釋
/*int main()
{
B obj;
obj.read();
return 0;
}*/
int main()
{
B obj;
obj.A::read();
cout<<"\n";
obj.B::read();
return 0;
}
/*int main()
{
A obj1;
B obj2;
A*ptr;
ptr=&obj1;
ptr->read();
cout<<"\n";
ptr=&obj2;
ptr->read();
return 0;
}*/

TA貢獻1852條經驗 獲得超1個贊
不知道這么多main函數干嘛的,就是多態性測試吧,讓基類對象指針指向派生類的read函數
class A
{
public:
void virtual read()//虛函數
{
cout<<"base class A";
}
};
class B:public A
{
public:
void read()//繼承 實現虛函數
{
cout<<"derived class B";
}
};
void main()
{
A *a;//基類指針
B obj;//派生類對象
a=&obj;//動態編聯 調用派生類的read函數
a->read();//輸出derived class B
getch();
}
- 2 回答
- 0 關注
- 424 瀏覽
添加回答
舉報