2015级C++第10、11周程序阅读 继承和派生
生活随笔
收集整理的這篇文章主要介紹了
2015级C++第10、11周程序阅读 继承和派生
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
閱讀程序,請寫出這些程序的運行結果
(1)閱讀程序,寫出執行結果
(2)閱讀程序,寫出執行結果
#include <iostream> using namespace std; class A { public:A(){a=0;}A (int i){a=i;}void print(){cout<<a<<" ";} private:int a; }; class B: public A { public:B(){b=0;}B(int i, int j, int k): A(i),aa(j){b=k;}//思考:這3處出現的print,有何區別void print() //(1){A::print(); //(2)aa.print(); //(3)cout<<b<<endl;} private:int b;A aa; }; int main() {B test[2];test[0]=B(1,4,7);test[1]=B(2,5,8);for(int i=0; i<2; i++)test[i].print();return 0; }(3)閱讀程序,寫出執行結果
#include <iostream> using namespace std; class A { public:A(char *s){cout<<s<<endl;} }; class B:public A { public:B(char *s1, char *s2):A(s1){cout<<s2<<endl;} }; class C:public A { public:C(char *s1,char *s2):A(s1){cout<<s2<<endl;} }; class D:public B, C { public:D(char *s1,char *s2,char *s3,char *s4):B(s1,s2),C(s3,s4){cout<<s4<<endl;} }; int main() {D d("class A","class B","class C","class D");return 0; }(4)閱讀程序,寫出執行結果
#include <iostream> using namespace std; class Base { public:Base(char i) { cout<<"Base constructor. --"<<i<<endl; } }; class Derived1:virtual public Base { public:Derived1(char i,char j):Base(i){cout<<"Derived1 constructor. --"<<j<<endl;} }; class Derived2:virtual public Base { public:Derived2(char i,char j):Base(i){cout<<"Derived2 constructor. --"<<j<<endl;} }; class MyDerived: public Derived1,public Derived2 { public:MyDerived(char i,char j,char k,char l,char m,char n,char x): Derived2(i,j), Derived1(k,l), Base(m), d(n){cout<<"MyDerived constructor. --"<<x<<endl;} private:Base d; }; int main() {MyDerived obj('A','B','C','D','E','F','G');return 0; }(5)閱讀下面類的定義,請說出在測試函數中不同情況的調用產生的結果
#include <iostream> using namespace std; class A { protected:int a,b; public:A(int aa, int bb):a(aa), b(bb) {}void printA(){cout<<"a: "<<a<<"\tb: "<<b<<endl;} }; class B: public A {int c; public:B(int aa, int bb, int cc):A(aa,bb),c(cc) {}void printB(){cout<<"a: "<<a<<"\tb: "<<b<<"\tc: "<<c<<endl;} }; int main() {A a(1,1);B b(2,3,4);//此處加入下面各小題中的代碼return 0; }(a)
a=b;a.printA();b.printA();b.printB();你認為輸出結果是:____________
運行程序的結果是:____________
(b)
程序會發生編譯錯誤,原因是:____
記錄下IDE中提示的錯誤并理解:___
(c)
將會發生錯誤的一行刪除;
對余下的程序,你認為輸出是:____
實際運行的輸出是:__________
那一行的錯誤原因是:________
(d)
將會發生錯誤的一行刪除;
對余下的程序,你認為輸出是:____
實際運行的輸出是:__________
那一行的錯誤原因是:________
(e)
在class A中增加成員函數:int getA(){return a;}
在main函數前增加一般函數:
main函數中指定部分為:
f(a);f(b);你認為輸出結果是:____________
運行程序的結果是:____________
總結
以上是生活随笔為你收集整理的2015级C++第10、11周程序阅读 继承和派生的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今天改bug遇到一个ie8样式错乱问题
- 下一篇: 深入理解JavaScript系列(3):