C++給學(xué)生習(xí)題第7章練習(xí)題_第1頁
C++給學(xué)生習(xí)題第7章練習(xí)題_第2頁
C++給學(xué)生習(xí)題第7章練習(xí)題_第3頁
C++給學(xué)生習(xí)題第7章練習(xí)題_第4頁
C++給學(xué)生習(xí)題第7章練習(xí)題_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上第7章練習(xí)題同步練習(xí)7.1一、選擇題1在下列運算符中,不能重載的是( )。(A)!(B)sizeof(C)new(D)delete2在下列關(guān)于運算符重載的描述中,( )是正確的。(A)可以改變參與運算的操作數(shù)個數(shù)(B)可以改變運算符原來的優(yōu)先級(C)可以改變運算符原來的結(jié)合性(D)不能改變原運算符的語義3運算符函數(shù)是一種特殊的( )或友元函數(shù)。(A)構(gòu)造函數(shù)(B)析構(gòu)函數(shù)(C)成員函數(shù)(D)重載函數(shù)4設(shè)op表示要重載的運算符,那么重載運算符的函數(shù)名是( )。(A)operator op(B)op(C)函數(shù)標識符(D)函數(shù)標識符op5用于類運算的運算符通常都要重載。但有

2、兩個運算符系統(tǒng)提供默認重載版本,它們是( )。(A)->和.(B)+和-(C)=和&(D)new和delete【解答】BDCAC同步練習(xí)7.2一、選擇題1在下列函數(shù)中,不能重載運算符的函數(shù)是( )。(A)成員函數(shù)(B)構(gòu)造函數(shù)(C)普通函數(shù)(D)友元函數(shù)2在下列運算符中,要求用成員函數(shù)重載的運算符是( )。(A)=(B)=(C)<=(D)+3在下列運算符中,要求用友元函數(shù)重載的運算符是( )。(A)=(B)(C)<<(D)( )4如果希望運算符的操作數(shù)(尤其是第一個操作數(shù))有隱式轉(zhuǎn)換,則重載運算符時必須用( )。(A)構(gòu)造函數(shù)(B)析構(gòu)函數(shù)(C)成員函數(shù)(D)友

3、元函數(shù)5當(dāng)一元運算符的操作數(shù),或者二元運算符的左操作數(shù)是該類的一個對象時,重載運算符函數(shù)一般定義為( )。(A)構(gòu)造函數(shù)(B)析構(gòu)函數(shù)(C)成員函數(shù)(D)友元函數(shù)【解答】BACDC二、程序練習(xí)1閱讀程序,寫出運行結(jié)果。#include <iostream>using namespace std;class T public : T() a = 0; b = 0; c = 0; T( int i, int j, int k ) a = i; b =j; c = k; void get( int &i, int &j, int &k ) i = a; j = b

4、; k = c; T operator* ( T obj ); private: int a, b, c;T T:operator* ( T obj ) T tempobj; tempobj.a = a * obj.a; tempobj.b = b * obj.b; tempobj.c = c * obj.c; return tempobj;int main() T obj1( 1,2,3 ), obj2( 5,5,5 ), obj3; int a, b, c; obj3 = obj1 * obj2; obj3.get( a, b, c ); cout<<"( obj1*

5、obj2 ): " <<"a = "<<a<<'t'<<"b = "<<b<<'t'<<"c = "<<c<<'n' (obj2*obj3).get( a, b, c ); cout<<"( obj2*obj3 ): " <<"a = "<<a<<'t'<<

6、"b = "<<b<<'t'<<"c = "<<c<<'n'【解答】 2閱讀程序,寫出運行結(jié)果。#include <iostream>using namespace std;class Vector public: Vector() Vector(int i,int j) x = i; y = j; friend Vector operator+ ( Vector v1, Vector v2 ) Vector tempVector; tempVecto

7、r.x = v1.x + v2.x; tempVector.y = v1.y + v2.y; return tempVector; void display() cout << "( " << x << ", " << y << ") "<< endl; private: int x, y;int main() Vector v1( 1, 2 ), v2( 3, 4 ), v3; cout << "v1 = " v1.display

8、(); cout << "v2 = " v2.display(); v3 = v1 + v2; cout << "v3 = v1 + v2 = " v3.display();【解答】 同步練習(xí)7.3一、選擇題1設(shè)有類A的對象Aobject,若用成員函數(shù)重載前置自增表達式,那么+Aobject被編譯器解釋為( )。(A)Aobject.operator+()(B)operator+(Aobject)(C)+(Aobject)(D)Aobject : operator+()2運算符+,=,+和中,只能用成員函數(shù)重載的運算符是( )。(

9、A)+和=(B)和后置+(C)=和(D)前置+和3在C+中,如果在類中重載了函數(shù)調(diào)用運算符(),那么重載函數(shù)調(diào)用的一般形式為( )。(A)(表達式)對象(B)(表達式表)對象(C)對象(表達式)(D)對象(表達式表)4設(shè)有類A的對象Aobject,若用友元函數(shù)重載后置自減表達式,那么Aobject-被編譯器解釋為( )。(A)Aobject.operator- ()(B)operator- (Aobject,0)(C)- (Aobject,0)(D)- (Aobject,0)5如果表達式+j*k中的+和*都是重載的友元運算符,則采用運算符函數(shù)調(diào)用格式,該表達式還可以表示為( )。(A)oper

10、ator*(j.operator+(),k)(B)operator*(operator+(j),k)(C)operator+(j).operator*(k)(D)operator*(operator+(j),)6如果類A要重載插入運算符<<,那么重載函數(shù)參數(shù)表的形式一般定義為( )。(A)(constA&)(B)(ostream&)(C)(constA&, ostream&)(D)(ostream&, constA&)【解答】ACDBBD同步練習(xí)7.4一、選擇題1類型轉(zhuǎn)換函數(shù)只能定義為一個類的( )。(A)構(gòu)造函數(shù)(B)析構(gòu)函數(shù)(C)

11、成員函數(shù)(D)友元函數(shù)2具有一個非默認參數(shù)的構(gòu)造函數(shù)一般用于實現(xiàn)從( )的轉(zhuǎn)換。(A)該類類型到參數(shù)類型(B)參數(shù)類型到該類類型(C)參數(shù)類型到基本類型(D)類類型到基本類型3假設(shè)ClassX是類類型標識符,Type為類型標識符,可以是基本類型或類類型,Type_Value為Type類型的表達式,那么,類型轉(zhuǎn)換函數(shù)的形式為( )。(A)ClassX : operator Type(Type t) return Type_Value; (B)friendClassX : operator Type() return Type_Value; (C)Type ClassX : operator Ty

12、pe() return Type_Value; (D)ClassX : operator Type() return Type_Value; 4在下列關(guān)于類型轉(zhuǎn)換的描述中,錯誤的是( )。(A)任何形式的構(gòu)造函數(shù)都可以實現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換。(B)帶非默認參數(shù)的構(gòu)造函數(shù)可以把基本類型數(shù)據(jù)轉(zhuǎn)換成類類型對象。(C)類型轉(zhuǎn)換函數(shù)可以把類類型對象轉(zhuǎn)換為其他指定類型對象。(D)類型轉(zhuǎn)換函數(shù)只能定義為一個類的成員函數(shù),不能定義為類的友元函數(shù)。5C+中利用構(gòu)造函數(shù)進行類類型轉(zhuǎn)換時的構(gòu)造函數(shù)形式為( )。(A)類名:類名(arg);(B)類名:類名(arg,arg1=E1,agrn=En);(C)類名(arg);(

13、D)類名(arg,arg1=E1,agrn=En);【解答】CBDAB二、程序練習(xí)1閱讀下面程序,按注釋位置指出語句的性質(zhì)。#include<string.h>#include<iostream>using namespace std;/定義String類class String friend ostream &operator<<(ostream & output,String &s);/(1)什么語句 friend istream &operator>>(istream & input,String &

14、amp;s);/(2)什么語句 public: String(const char *m="");/(3)什么語句 String();/(4)什么語句 operator int() const;/(5)什么語句 operator char* ()const;/(6)什么語句 private: char *str; int size;/(7)什么定義String:String(const char *m) size=strlen(m); str=new charsize+1; strcpy_s(str,size+1,m);/(8)什么定義String:String() del

15、ete str; size=0;/(9)什么定義ostream &operator<<(ostream &output,String &s) output<<s.str; return output;/(10)什么定義istream &operator>>(istream &input,String &s) char temp1000; input>>temp; delete s.str; s.size=strlen(temp); s.str=new chars.size+1; strcpy_s(s

16、.str,s.size+1,temp); return input;/(11)什么定義String:operator int()const return size; /(12)什么定義String:operator char* () const static char temp1000; strcpy_s(temp,"""); strcat_s(temp,str); strcat_s(temp,"""); return temp;int main() char s100; String s1,s2;/(13)調(diào)用什么函數(shù) cout&l

17、t;<"Please input two strings:"<<endl; cin>>s1>>s2;/(14)調(diào)用什么函數(shù) cout<<"output is:"<<endl; cout<<"s1 as String-"<<s1<<endl;/(15)調(diào)用什么函數(shù) cout<<"sizeof(s1) -sizeof(s2)="<<(int)s1- (int)s2)<<endl;/(

18、16)調(diào)用什么函數(shù) cout<<"s1 as char * -"<<(char*)s1<<endl;/(17)調(diào)用什么函數(shù) cout<<"s2 as char * -"<<(char*)s2<<endl;/(18)調(diào)用什么函數(shù) strcpy(s,s2);/(19)調(diào)用什么函數(shù) cout<<"After strcpy(s,s2); s="<<s<<endl;/(20)調(diào)用什么函數(shù) return 0;/(21)調(diào)用什么函數(shù)【解答】#

19、include<string.h>#include<iostream>using namespace std;/定義String類class Stringfriend ostream &operator<<(ostream & output,String &s); /(1)運算符<<重載函數(shù)聲明friend istream &operator>>(istream & input,String &s); /(2)運算符>>重載函數(shù)聲明public:String(const ch

20、ar *m="");/(3)構(gòu)造函數(shù)聲明String();/(4)析構(gòu)函數(shù)聲明operator int() const;/(5)類型轉(zhuǎn)換函數(shù)聲明operator char* ()const;/(6)類型轉(zhuǎn)換函數(shù)聲明private:char *str;int size;/(7)定義構(gòu)造函數(shù)String:String(const char *m)size=strlen(m);str=new charsize+1;strcpy_s(str,size+1,m);/(8)定義析構(gòu)函數(shù) String:String() delete str;size=0; /(9)定義運算符<&l

21、t;重載函數(shù)ostream &operator<<(ostream &output,String &s)output<<s.str;return output;/(10)定義運算符>>重載函數(shù)istream &operator>>(istream &input,String &s)char temp1000;input>>temp;delete s.str;s.size=strlen(temp);s.str=new chars.size+1;strcpy_s(s.str,s.size+1

22、,temp);return input;/(11)定義int類型轉(zhuǎn)換函數(shù)String:operator int()constreturn size;/(12)定義char*類型轉(zhuǎn)換函數(shù)String:operator char* () conststatic char temp1000;strcpy_s(temp,""");strcat_s(temp,str);strcat_s(temp,""");return temp;int main()char s100;String s1,s2;/(13)調(diào)用構(gòu)造函數(shù)cout<<&q

23、uot;Please input two strings:"<<endl;cin>>s1>>s2;/(14)/調(diào)用operator>>函數(shù)cout<<"output is:"<<endl;cout<<"s1 as String-"<<s1<<endl;/(15)調(diào)用operator<<函數(shù)cout<<"sizeof(s1)-sizeof(s2)="<<(int)s1-(int)s2)

24、<<endl;/(16)調(diào)用operator int類型轉(zhuǎn)換函數(shù)cout<<"s1 as char * -"<<(char*)s1<<endl;/(17)調(diào)用operator char*類型轉(zhuǎn)換函數(shù)cout<<"s2 as char * -"<<(char*)s2<<endl;/(18)調(diào)用operator char*類型轉(zhuǎn)換函數(shù)strcpy(s,s2);/(19)對參數(shù)s2調(diào)用類型轉(zhuǎn)換函數(shù)operator char*,然后調(diào)用庫函數(shù)cout<<"After strcpy(s,s2); s="<<s<<endl;/(20)

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論