日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

2015级C++第10、11周程序阅读 继承和派生

發布時間:2025/3/20 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2015级C++第10、11周程序阅读 继承和派生 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

閱讀程序,請寫出這些程序的運行結果
(1)閱讀程序,寫出執行結果

#include <iostream> using namespace std; class Data { public:Data(int i):x(i){cout<<"A";}~Data(){ cout<<"B";} private:int x; }; class Base { public:Base(int i):b1(i){cout<<"C";}~Base(){ cout<<"D";} private:int b1; }; class Derived:public Base { public:Derived (int i,int j):Base(i),d1(j){cout<<"E";}~Derived(){cout<<"F";} private:Data d1; }; int main() {Derived obj(1,2);return 0; }

(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)

b=a;a.printA();b.printA();b.printB();

程序會發生編譯錯誤,原因是:____
記錄下IDE中提示的錯誤并理解:___
(c)

A &r1=a;A &r2=b;r1.printA();r2.printA();r2.printB();

將會發生錯誤的一行刪除;
對余下的程序,你認為輸出是:____
實際運行的輸出是:__________
那一行的錯誤原因是:________
(d)

A *p=&a;p->printA();p=&b;p->printA();p->printB();

將會發生錯誤的一行刪除;
對余下的程序,你認為輸出是:____
實際運行的輸出是:__________
那一行的錯誤原因是:________
(e)
在class A中增加成員函數:int getA(){return a;}
在main函數前增加一般函數:

void f(A x) {cout<<"aaaaah, my a: "<<x.getA()<<endl; }

main函數中指定部分為:

f(a);f(b);

你認為輸出結果是:____________
運行程序的結果是:____________

總結

以上是生活随笔為你收集整理的2015级C++第10、11周程序阅读 继承和派生的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。