有一程式如下:
class A{
public:
void f(){
cout<<"A::f().."<<endl;
}
};
class B{
public:
void f(){
cout<<"B::f().."<<endl;
}
void g(){
cout<<"B::g().."<<endl;
}
};
class C:public A,public B{
public :
void g(){
cout<<"C::g().."<<endl;
}
void h(){
cout<<"C::h().."<<endl;
f();// 陳述句1
}
};
int main(){
C obj;
obj.f();//陳述句2
obj.A::f();//陳述句3
obj.B::f();//陳述句4
obj.g(); //陳述句5
system("pause");
return 0;
}
則編譯時會產生錯誤的陳述句有()
A陳述句1 B陳述句2 C陳述句3 D陳述句4 E陳述句5
答案:A,B
為什么是A,B?
uj5u.com熱心網友回復:

多繼承。。
uj5u.com熱心網友回復:
是考題嗎? 多重繼承下的模凌兩可...必須以虛擬基本類來定義......uj5u.com熱心網友回復:
語句1 . 語句2 為多重繼承的重複為模凌兩可的錯誤...使用時需指明所屬類對象...例: A::f(); 或 B::f();class A {
public:
void f() {
cout << "A::f().." << endl;
}
};
class B {
public:
void f() {
cout << "B::f().." << endl;
}
void g() {
cout << "B::g().." << endl;
}
};
class C : public A, public B {
public:
void g() {
cout << "C::g().." << endl;
}
void h() {
cout << "C::h().." << endl;
A::f(); // 陳述句1
}
};
int main() {
C obj;
obj.B::f(); // 陳述句2
obj.A::f(); // 陳述句3
obj.B::f(); // 陳述句4
obj.g(); // 陳述句5
system("pause");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/132769.html
標籤:基礎類
下一篇:編譯OgreOde出錯,求解釋
