- 相關(guān)推薦
C++的復(fù)習(xí)題
一、單項(xiàng)選擇題(本大題共10小題,每小題2分,共20分)
在每小題列出的四個(gè)備選項(xiàng)中只有一個(gè)是符合題目要求的,請(qǐng)將其代碼填寫(xiě)在題后的括號(hào)內(nèi)。錯(cuò)選、多選或未選均無(wú)分。
1.下列關(guān)于類(lèi)的說(shuō)法中,錯(cuò)誤的是( )
A)類(lèi)是一種用戶自定義的數(shù)據(jù)類(lèi)型 B)如果不作特別聲明,類(lèi)所有成員均為私有類(lèi)型
C)任何一個(gè)對(duì)象只能屬于一個(gè)具體的類(lèi) D)只有類(lèi)中的成員函數(shù)才能存取類(lèi)中的私有數(shù)據(jù)
2.下列情況中,不會(huì)調(diào)用拷貝構(gòu)造函數(shù)的是( )
A)用一個(gè)對(duì)象去初始化同一類(lèi)的另一個(gè)新對(duì)象時(shí)
B)將類(lèi)的一個(gè)對(duì)象賦予該類(lèi)的另一個(gè)對(duì)象時(shí)
C)函數(shù)的形參是類(lèi)的對(duì)象,調(diào)用函數(shù)進(jìn)行形參和實(shí)參結(jié)合時(shí)
D)函數(shù)的返回值是類(lèi)的對(duì)象,函數(shù)執(zhí)行返回調(diào)用時(shí)
3.在C++中,用于實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)性的是( )
A)內(nèi)聯(lián)函數(shù) B)重載函數(shù) C)模板函數(shù) D)虛函數(shù)
4. 如果類(lèi)A被說(shuō)明為類(lèi)B的友元,則( )
A)類(lèi)A的成員即類(lèi)B的成員 B) 類(lèi)A的成員函數(shù)可以訪問(wèn)類(lèi)B的成員 C類(lèi)B的成員函數(shù)可以訪問(wèn)類(lèi)A的成員 D)類(lèi)B是類(lèi)A的友元
5.友元函數(shù)重載一個(gè)運(yùn)算符時(shí),如果參數(shù)表中沒(méi)有任何參數(shù),則說(shuō)明該運(yùn)算符是( )
A)一元運(yùn)算符 B)二元運(yùn)算符 C)重載錯(cuò)誤 D)選項(xiàng)A)和選項(xiàng)B)都有可能
6.假定X為一個(gè)類(lèi),執(zhí)行X a[3],*p[2];語(yǔ)句會(huì)自動(dòng)調(diào)用該類(lèi)的`構(gòu)造函數(shù)( )次
A)2 B)3 C)4 D)5
7.下列有關(guān)繼承和派生的敘述中,正確的是( )
A)如果一個(gè)派生類(lèi)私有繼承其基類(lèi),則該派生類(lèi)對(duì)象不能訪問(wèn)基類(lèi)的保護(hù)成員
B)派生類(lèi)的成員函數(shù)可以訪問(wèn)基類(lèi)的所有成員
C)基類(lèi)對(duì)象可以賦值給派生類(lèi)對(duì)象
D)如果派生類(lèi)沒(méi)有實(shí)現(xiàn)基類(lèi)的一個(gè)純虛函數(shù),則該派生類(lèi)是一個(gè)抽象類(lèi)
8.關(guān)于對(duì)多繼承的二義性的描述中,錯(cuò)誤的是( )
A)一個(gè)派生類(lèi)和基類(lèi)中都有某個(gè)同名成員,在派生類(lèi)中對(duì)這個(gè)成員的訪問(wèn)可能出現(xiàn)二義性
B)解決二義性的最常用的方法是對(duì)成員名的限定法
C)基類(lèi)和派生類(lèi)同時(shí)出現(xiàn)同名函數(shù),也存在二義性問(wèn)題
D)一個(gè)派生類(lèi)是從兩個(gè)基類(lèi)派生而來(lái)的,而這兩個(gè)基類(lèi)又有一個(gè)共同的基類(lèi),對(duì)該基類(lèi)成員進(jìn)行訪問(wèn)時(shí),可能出現(xiàn)二義性
9.下列關(guān)于純虛函數(shù)和抽象類(lèi)的描述中,錯(cuò)誤的是( )
A)純虛函數(shù)時(shí)一種特殊的虛函數(shù),它沒(méi)有具體實(shí)現(xiàn)
B)抽象類(lèi)是指具有純虛函數(shù)的類(lèi)
C)一個(gè)基類(lèi)中說(shuō)明有虛函數(shù),該基類(lèi)的派生類(lèi)一定不再是抽象類(lèi)
D)抽象類(lèi)只能作為基類(lèi)來(lái)使用,其純虛函數(shù)的實(shí)現(xiàn)由派生類(lèi)給出
10.下列關(guān)于模板的敘述中,錯(cuò)誤的是( ) A)模板聲明中的第一個(gè)符號(hào)總是關(guān)鍵字template
B)在模板聲明中用 < > 括起來(lái)的部分是模板的形參表 C)類(lèi)模板不能有數(shù)據(jù)成員
D)在一定條件下函數(shù)模板的實(shí)參可以省略
二、填空題(本大題共6空,每空2分,共12分)
1._________是一種特殊的成員函數(shù),它主要用來(lái)為對(duì)象分配空間,對(duì)類(lèi)的成員進(jìn)行初始化并執(zhí)行對(duì)象的其它內(nèi)部管理操作。
2.定義在類(lèi)內(nèi)部的函數(shù)為類(lèi)默認(rèn)狀態(tài)的_________,在類(lèi)外部每次調(diào)用該函數(shù)時(shí),相應(yīng)的函數(shù)代碼都會(huì)在調(diào)用函數(shù)位置展開(kāi)。
3.要想把類(lèi)的一般成員函數(shù)說(shuō)明為類(lèi)的常成員函數(shù),則應(yīng)該使用關(guān)鍵字_________。 4.當(dāng)一個(gè)類(lèi)的成員函數(shù)被調(diào)用時(shí),該成員函數(shù)的_________指向調(diào)用它的對(duì)象。 5.C++中模板可分為_(kāi)________和_________。
三、閱讀程序,寫(xiě)出執(zhí)行結(jié)果(本題有5個(gè)小題,每小題6分,共30分)
1. #includeclass sample{
int n;
public:
sample(int i){n=i; } void add( ){s+=n;} static int s; void dis( ){ cout<<s<<endl; } }; 2.
int sample ::s=0
void main() { sample a(2),b(5),c(8); a. add( ); b. add( ); c. dis( ); }
#includeclass base {
int n; public:
base(int a) {
cout<<”constructing base class with a number=”<<a<<endl; n=a; }
~base()
{cout<<”destructing base class”<< endl; }
2
};
class derive:public base { int m; public: derive(int a,int b):base(a) { cout <<”constructing derive class with a number=”<<b<<endl; } ~derive() { cout<<”destructing derive
class”<<endl;} };
void main()
3.
class string{ char *name; int length; public: ……
virtual void show() { cout<<name<<" "; } };
class de_string:public string { int age; public: …… void show() { string::show();
4.
#includeusing namespace std; class Base {public: Base(int x,int y) { a=x;
b=y; }
void show()
{ cout<<"Base:"<<a<<";"<<b<<endl;
}
private: int a,b;
};
class Derived:public Base {
{ derive s(1,2);
}
cout<<"The age is:"<<age<<" "; } }; main()
{ string s1("Mike "), *ptr1; de_string s2("Steven ",20), *ptr2; ptr1=&s1; ptr1->show(); ptr1=&s2; ptr1->show(); ptr2=&s2; ptr2->show(); return 1 ; }
public:
Derived(int x,int y,int z):Base(x,y),c(z) { } void show() { cout<<"Derived:"<<c<<endl;
}
private: int c;
}; int main() { Base b(20,10),*pb; Derived d(30,40,50); pb=&b;
pb->show(); 3
5.
pb=&d; pb->show(); } return 0;
#include
using namespace std;
class Base1
{public:
};
class Base2
{public:
};
class Level1:public Base2,virtual public Base1
{public:
Level1() {cout<<"class Level1"<<endl;}}; Base2() {cout<<"class Base2"<<endl; } Base1() {cout<<"class Base1"<<endl; }
class Level2:public Base2,virtual public Base1
{public:
};
class Toplevel:public Level1,public Level2
{public:
Toplevel() {cout<<"class TopLevel"<<endl; }}; Level2() {cout<<"class Level2"<<endl;}
void main()
{
Toplevel obj;
}
四、完成程序題(本大題有3個(gè)小題,每題6分,共18分)
1.對(duì)于下面定義的類(lèi)Myclass,請(qǐng)?jiān)诤瘮?shù)f( )中添加對(duì)象成員把n的值修改為50。 4
class Myclass
{
private:
int n;
public:
Myclass (___①_____) {n=x;}
void SetNum( int nl ) {n=nl;}
};
int f( )
{
Myclass *ptr=new Myclass(45);
_____②_____;
}
2.在下面橫線處填上適當(dāng)語(yǔ)句,完成類(lèi)中靜態(tài)數(shù)據(jù)成員的定義。
class test
{
private:
static int x;
public:
};
_____①______;//將x的值初始化為10
_____②_______{return x;} //定義靜態(tài)成員函數(shù)
3. 下列是二維向量vector2D的定義,其中作為成員函數(shù)重載的運(yùn)算符"+"的功能是將兩向量
的分量x和y對(duì)應(yīng)相加,然后返回作為相加結(jié)果的新對(duì)象。請(qǐng)補(bǔ)充完整:
Class vector2D {
double x;
double y;
public:
vector2D( double x0=0,double y0=0):x(x0),y(y0){ }
void show( ){cout<<’(’<<x<<’,’<<y<<’)’;}
vector2D operator+(vector2D);
};
Vector2D _①___operator+(vector 2D a){
return vector2D(_②___); static int getX( );
【C++的復(fù)習(xí)題】相關(guān)文章:
c++程序畢業(yè)實(shí)習(xí)報(bào)告03-03
c++泛型算法的總結(jié)11-08
c++程序員簡(jiǎn)歷模板05-19
小學(xué)數(shù)學(xué)精選復(fù)習(xí)題06-16
《納米材料》復(fù)習(xí)題06-16