版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、一、 單項選擇題。 1引入內(nèi)聯(lián)函數(shù)的主要目的是A)縮短程序代碼,少占用內(nèi)存空間B既可以保證程序的可讀性,又能提高程序的運行效率C)提高程序的執(zhí)行速度D)使程序的結(jié)構(gòu)比較清晰2重載函數(shù)是A)以函數(shù)參數(shù)來區(qū)分,而不用函數(shù)的返回值來區(qū)分不同的函數(shù)B以函數(shù)的返回值來區(qū)分,而不用函數(shù)參數(shù)來區(qū)分不同的函數(shù)C)參數(shù)表完全相同而返回值類型不同的兩個或多個同名函數(shù)D)參數(shù)表和返回值類型都必須是不同的兩個或多個同名函數(shù)3有函數(shù)原型 void fun2 (int *), 下面選項中,正確的調(diào)用是 A) double x = 2.17; fun2 (&x); C) int a = 15; fun2 (a*3.
2、14);B) int b = 100; fun2 (& b); D) fun2 (256);4在C+中,要實現(xiàn)動態(tài)聯(lián)編,必須使用( )調(diào)用虛函數(shù)。A) 類名 B) 派生類指針 C)對象名 D) 基類指針5 在公有派生情況下,有關(guān)派生類對象和基類對象的關(guān)系,下列敘述不正確的是A)派生類的對象可以直接訪問基類中的所有成員B)派生類的對象可以初始化基類的引用C)派生類的對象可以賦給基類的對象D) 派生類的對象的位置可以賦給指向基類的指針6設(shè)置虛基類的目的是A)消除兩義性 B) 簡化程序C)提高運行效率 D)減少目標(biāo)代碼7關(guān)于構(gòu)造函數(shù),以下說法錯誤的是A) 構(gòu)造函數(shù)的作用是在對象被創(chuàng)建時使用特
3、定的值構(gòu)造對象,或者說將對象初始化為一個特定的狀態(tài)。在對象創(chuàng)建時由系統(tǒng)自動調(diào)用。B) 基類的構(gòu)造函數(shù)可以被派生類所繼承。C) 如果程序中未聲明,則系統(tǒng)自動產(chǎn)生出一個缺省形式的構(gòu)造函數(shù)。D) 允許為內(nèi)聯(lián)函數(shù)、重載函數(shù)、帶缺省形參值的函數(shù)。8下列關(guān)于C+函數(shù)的說明中,正確的是A)內(nèi)聯(lián)函數(shù)就是定義在另一個函數(shù)體內(nèi)部的函數(shù)B)函數(shù)體的最后一條語句必須是return語句C)標(biāo)準(zhǔn)C+要求在調(diào)用一個函數(shù)之前,必須先聲明其原型D)編譯器會根據(jù)函數(shù)的返回值類型和參數(shù)表來區(qū)分函數(shù)的不同重載形式9 由于常對象不能被更新,因此A)通過常對象只能調(diào)用它的常成員函數(shù)B)通過常對象只能調(diào)用靜態(tài)成員函數(shù)C)常對象的成員都是常
4、成員D)通過常對象可以調(diào)用任何不改變對象值的成員函數(shù)10下列關(guān)于虛函數(shù)的說明中,正確的是A)從虛基類繼承的函數(shù)都是虛函數(shù) B)虛函數(shù)不得是靜態(tài)成員函數(shù)C)只能通過指針或引用調(diào)用虛函數(shù) D)抽象類中的成員函數(shù)都是虛函數(shù)11 運算符重載是對已有的運算符賦予多重含義,因此A)可以對基本類型(如int類型)的數(shù)據(jù),重新定義“+”運算符的含義B)可以改變一個已有運算符的優(yōu)先級和操作數(shù)個數(shù)C)只能重載C+中已經(jīng)有的運算符,不能定義新運算符D)C+中已經(jīng)有的所有運算符都可以重載12模板對類型的參數(shù)化提供了很好的支持,因此A)類模板的主要作用是生成抽象類B)類模板實例化時,編譯器將根據(jù)給出的模板實參生成一個類
5、C)在類模板中的數(shù)據(jù)成員都具有同樣類型D)類模板中的成員函數(shù)都沒有返回值13下列符號中可以用作C+標(biāo)識符的是A)_radius B)foobar C)else D)3room14下列語句中,錯誤的是A)const int buffer=256; B)const int temp;C)const double *point; D)const double *rt =new double(5.5);15有如下程序:int x=3;dox -= 2;cout<<x;while(!(-x);執(zhí)行這個程序的輸出結(jié)果是A) 1 B) 3 0 C) l -2 D)死循環(huán)16有如下程序:#incl
6、ude <iostream>using namespace std;int main()int *p;*p = 9;cout<<"The value at p:"<<*p;return 0;編譯運行程序?qū)⒊霈F(xiàn)的情況是A)夠編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件B)運行時一定輸出:The value at p: 9C)運行時一定輸出:The value at p: *9D)運行時有可能出錯17 有如下程序: #include <iostream>using namespace std;int main()void functio
7、n(double val);double val;function(val);cout<<val;return 0;void function(double val)val = 3;編譯運行這個程序?qū)⒊霈F(xiàn)的情況是A)編譯出錯,無法運行 B)輸出:3C)輸出:3.0 D)輸出一個不確定的數(shù)18 有如下類定義:class AAint a;public:int getRef() const return &a; /int getValue() const return a; /void set(int n) const a=n; /friend void show(AA aa)
8、const cout<<aa; /;其中的四個函數(shù)定義中正確的是A) B) C) D)19有如下程序:#include <iostream>using namespace std;class Basepublic:void fun()cout<<"Base:fun"<<endl;class Derived:public Basepublic:void fun()cout<<"Derived:fun"<<endl;int main()Derived d;_;d.fun();return
9、 0;已知其執(zhí)行后的輸出結(jié)果為:Base:funDerived:fun則程序中下劃線處應(yīng)填入的語句是A)Base.fun(); B)Base:fun() C)Base->fun() D)fun();20下面是重載為非成員函數(shù)的運算符函數(shù)原型,其中錯誤的是A)Fraction operator + (Fraction, Fraction);B)Fraction operator - (Fraction);C)Fraction& operator = (Fraction&, Fraction);D)Fraction& operator += (Fraction&
10、;, Fraction);21有如下類定義:class Foopublic:Foo(int v):value(v) /Foo() /private:Foo() /int value = 0; /;其中存在語法錯誤的行是A) B) C) D)22 有如下類定義:class Pointint x_, y_;public:Point():x_(0), y_(0)Point(int x, int y = 0):x_(x),y_(y); 若執(zhí)行語句 Point a(2), b3, *c4;則Point類的構(gòu)造函數(shù)被調(diào)用的次數(shù)是A)2次 B)3次 C)4次 D)5次23有如下程序:#include <
11、;iostream>using namespace std;class Apublic:A()cout<<"A"A()cout<<"A"class B:public A A* p;public:B()cout<<"B" p = new A();B()cout<<"B" delete p;int main()B obj;return 0;執(zhí)行這個程序的輸出結(jié)果是A)BAAABAB)ABABAAC)BAABAA D)ABAABA24有如下程序:#include &l
12、t;iostream>using namespace std;class Baseprivate:void funl() constcout<<"funl"protected:void fun2() constcout<<"fun2"public:void fun3() constcout<<"fun3"class Derived: protected Basepublic:void fun4() constcout<<"fun4"int main()Deriv
13、ed obj;obj.funl(); /obj.fun2(); /obj.fun3(); /obj.fun4(); /return 0;其中有語法錯誤的語句是A) B) C) D)25有如下程序:#include <iostream>using namespace std;class Basepublic:void funl()cout<<"Base "<<endl;virtual void fun2()cout<<"Base"<<endl; ;class Derived:public Base
14、public:void funl()cout<<"Derived"<<endl;void fun2()cout<<"Derived"<<endl;void f(Base &b) b.funl(); b.fun2(); int main()Derived obj;f(obj);return 0;執(zhí)行這個程序的輸出結(jié)果是A)Base B)Base C)Derived D)DerivedBase Derived Base Derived26 有如下類聲明:class SAMPLE int n;public
15、:SAMPLE (int i = 0): n(i)void setValue(int n0);下列關(guān)于setValue成員函數(shù)的實現(xiàn)中,正確的是A)SAMPLE:setValue(int n0)n = n0;B)void SAMPLE:setValue(int n0)n = n0;C)void setValue(int n0)n = n0;D)setValue(int n0)n = n0;27下列函數(shù)模板的定義中,合法的是( )。Atemplate <typename T> T abs(T x)return x<0?-x:x;Btemplate class <T>
16、 T abs(T x)return x<0?-x:x;Ctemplate T <typename T> abs(T x)return x<0?-x:x;Dtemplate T abs(T x)return x<0?-x:x;28下列程序的運行結(jié)果為( )。 # include <iostream > class BASE public: BASE(int i)cout<<"調(diào)用基類BASE的構(gòu)造函數(shù):"<<i<<endl;class A :public BASE public: A (int a,
17、int b):BASE(a),b1(b) cout <<"調(diào)用派生類A的構(gòu)造函數(shù):"<<a+b<<endl; private: BASE b1; ; void main() A obj(1,2);A 調(diào)用基類BASE的構(gòu)造函數(shù):2B) 調(diào)用基類BASE的構(gòu)造函數(shù):1調(diào)用基類BASE的構(gòu)造函數(shù):1 調(diào)用基類BASE的構(gòu)造函數(shù):2調(diào)用派生類A的構(gòu)造函數(shù):3 調(diào)用派生類A的構(gòu)造函數(shù):3C) 調(diào)用基類BASE的構(gòu)造函數(shù):2D) 調(diào)用基類BASE的構(gòu)造函數(shù):1調(diào)用派生類A的構(gòu)造函數(shù):3 調(diào)用基類BASE的構(gòu)造函數(shù):329下列程序的運行結(jié)果為( )。
18、# include<iostream.h> class T public: T( int x) a=x; b+=x; static void display( T c) cout<<”a=”<<c.a<<t<<”b=”<<c.b<<endl; private: int a; static int b; ; int T:b=5; void main() T A(3),B(5); T:display(A); T:display(B); A) a=3 b=8B) a=3 b=5 a=5 b=10a=5 b=5Ca=3
19、 b=13 D) a=3 b=8 a=5 b=13a=5 b=1330.下面程序中對一維坐標(biāo)點類Point進行運算符重載 #include<iostream>using namespace std;class point public:point (int vaI) x=val;point operator+()x+;retum*this;point operator+(int) point old=*this,+(*this);retum old;int GetX() const retum x;private:int x;int main()point a(10);cout&l
20、t;<(+a).GetX();cout<<a+.GetX();retum();編譯和運行情況是A)運行時輸出1011 B)運行時輸出1111C)運行時輸出1112 D)編譯有錯二、 填空題。1 程序中有如下語句for(int i = 0; i<5; i+) cout<<*(p + i)<<","能夠依次輸出int型一維數(shù)組DATA的前5個元素。由此可知,變量p的定義及初始化語句是_。2 若下面程序運行時輸出結(jié)果為1, A, 10.12, B, 3.5請將程序補充完整。,#includeusing namespace std;i
21、nt main()void test(int, char,double _ );test(1,'A',10.1);test(2,'B');return 0;void test(int a, char b, double c)cout<<a<<","<<b<<","<<c<<endl;3有如下類聲明:class MyClassint i;private: int j;protected:int k;public:int m, n;其中,私有成員的數(shù)量為
22、_ 。4 有如下程序:#includeusing namespace std;class ONEpublic:virtual void f()cout<<"l"class TWO:public ONEpublic:TWO()cout<<"2"class THREE:public TWOpublic:virtual void f()TWO:f(); cout<<"3"int main()ONE aa, *p;TWO bb;THREE cc;p = &cc;p->f();return 0;
23、執(zhí)行上面程序的輸出是 _ 。5 有如下程序:#includeusing namespace std;class PARENTpublic:PARENT()cout<<"PARENT"class SON:public PARENTpublic:SON()cout<<"SON"int main()SON son;PARENT *p;p = &son;return 0;執(zhí)行上面程序的輸出是_ 。6若以非成員函數(shù)形式,為類Bounce重載“!”運算符,其操作結(jié)果為一bool型數(shù)據(jù),則該運算符重載函數(shù)的原型是 _ 。7下面是復(fù)數(shù)類c
24、omplex的定義,其中重載的運算符“+”的功能是返回一個新的復(fù)數(shù)對象,其實部等于兩個操作對象實部之和,其虛部等于兩個操作對象虛部之和;請補充完整:class complexdouble real; /實部double imag; /虛部public:complex(double r,double i):real(r),imag(i)complex operator+(complex a) return complex(_ );8 已知一個函數(shù)模板定義為template T1, typename T2>T1 FUN(T2 n) return n * 5.0;若要求以int型數(shù)據(jù)7為函數(shù)實
25、參調(diào)用該模板函數(shù),并返回一個double型數(shù)據(jù),則該 調(diào)用應(yīng)表示為 _。9設(shè)有數(shù)組和指針變量定義為:int a23=1,2,3,4,5,*p=&a02;則表達式*(p+1)的值為: 。10有字符數(shù)組和字符指針定義:char s1=”string”,char s2=”char”;char *const ps=s1;則使用指針ps進行操作時,可以改變ps ,但不能改變ps 。11.設(shè)Cat是已定義的類,整型變量a是Cat類的公有成員變量,p是Cat類的對象指針,且已指向Cat類的對象c,則用指針p給整型成員變量a賦值5的語句為: 。12在C+語言中,運算符可以重載,運算符重載實質(zhì)上就是函數(shù)
26、的重載,運算符重載實現(xiàn)的多態(tài)性屬于: 。13在C+語言中,運算符可以重載,運算符重載實質(zhì)上就是函數(shù)的重載,設(shè)后置運算符“+”在類A的定義中被重載為成員函數(shù),則對A類對象a作運算a+,與該運算表達式等價的函數(shù)調(diào)用形式為: 。14. 當(dāng)保護繼承時,基類的 成員在派生類中成為保護成員,不能通過派生類的對象來直接訪問該成員。15.在類中,_成員為類的所有對象所共享。16. 如果使用數(shù)組名作為函數(shù)參數(shù),形實結(jié)合時,傳遞的是_。17. 有如下定義: class MAint value;public:MA(int n=0):valut(n);MA*ta,tb;其中MA類的對象名標(biāo)識符是_。18. 若將一個二
27、元運算符重載為類的成員函數(shù),其形參個數(shù)應(yīng)該是_ 個。19. 有如下程序: #include<iostream>using namespace std;class DAint k;public:DA(int x=1): k (x)DA()cout<<k ;int main()DA d=DA(3),DA(3),DA(3);DA* p=new DA2;deletep;return0;這個程序的輸出結(jié)果是 _ 。20. C+語言中的多態(tài)性分為編譯時的多態(tài)性和_ 時的多態(tài)性。三、 簡答題。1. 什么叫做友元函數(shù),什么叫做友元類?2什么叫做多態(tài)性,面向?qū)ο蟮亩鄳B(tài)性可以分為哪四類?3什么叫做作用域?C+中有哪幾種類型的作用域?4對比簡述C語言中函數(shù)內(nèi)靜態(tài)局部變量與C+中類的靜態(tài)成員變量的特點。5簡述用虛函數(shù)實現(xiàn)動態(tài)多態(tài)性的三個關(guān)鍵之處。6什么是內(nèi)聯(lián)函數(shù),它有哪些特點?7列出拷貝構(gòu)造函數(shù)被調(diào)用的三種情況。8比較類的三種繼承方式public、protected、private之間的差別。9什么是虛基類?有何作用?10什么是編譯時的多態(tài)?具體包括哪些類型?
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《培訓(xùn)教程課件》課件
- 2025合資辦學(xué)合同
- 2025辦公用品的長期采購合作合同
- 農(nóng)村社會實踐報告范文
- 超市盤點分析報告范文
- 監(jiān)理工作總結(jié)報告范文
- 課題申報書:高水平大學(xué)教學(xué)為主型崗位準(zhǔn)入與動態(tài)轉(zhuǎn)換機制研究
- 上海農(nóng)林職業(yè)技術(shù)學(xué)院《針織服飾設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 11葡萄溝 公開課一等獎創(chuàng)新教學(xué)設(shè)計
- 3《自己之歌》公開課一等獎創(chuàng)新教學(xué)設(shè)計統(tǒng)編版高中語文選擇性必修中冊
- (完整word版)首件檢驗管理制度
- 線路工程灌注樁施工作業(yè)指導(dǎo)書施工方案
- 重力壩的分縫與止水
- 三重管高壓旋噴樁施工工藝規(guī)程與施工方案
- 個體診所藥品清單
- PFMEA的嚴(yán)重度SOD的評分和優(yōu)先級別
- 國網(wǎng)基建國家電網(wǎng)公司輸變電工程結(jié)算管理辦法
- 100道遞等式計算(能巧算得要巧算)
- 中國地圖含省份信息可編輯矢量圖
- 路政運政交通運輸執(zhí)法人員考試題庫
- 企業(yè)技術(shù)標(biāo)準(zhǔn)化管理
評論
0/150
提交評論