版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1.下列語句中錯誤的是(D)
A.int*p=newint(10);
B.int*p=newint[10];
C.
int*p=newint;
D.int*p=newint[40](0)
2.假設(shè)已經(jīng)有定義char*constname=”chen”;下面的語句中正確的是(A)
A.name[3]=’q’;
B.name=”lin”;
C.name=newchar[5]
D.name=newchar(‘q’);
3.下面的類型聲明中正確的是(D)
A.int&a[4]
B.int&*p;
C.int&&q;
D.intI,*p=&I;
4.在聲明類時,下面的說法正確的是(C)
A.可以在類的聲明中給數(shù)據(jù)成員賦值
B.數(shù)據(jù)成員的數(shù)據(jù)類型可以是register
C.private、public、protected可以按任意順序出現(xiàn)
D.沒有用private、public、protected定義的數(shù)據(jù)成員是公有成員
5.構(gòu)造函數(shù)是在(B)時被執(zhí)行的。
A.程序編譯
B.創(chuàng)建對象
C.創(chuàng)建類
D.程序裝入內(nèi)存
6.在下面有關(guān)友元函數(shù)的描述中,正確的說法是(A)
A.友元函數(shù)是獨立于當(dāng)前類的外部函數(shù)
B.一個友元函數(shù)不能同時定義為兩個類的有友元函數(shù)
C.友元函數(shù)必須在類的外部定義
D.在外部定義友元函數(shù)時,必須加關(guān)鍵字friend
7.使用派生類的主要作用是(A)
A.提高代碼的可重用性
B.提高程序的運行效率
C.加強類的封裝性
D.實現(xiàn)數(shù)據(jù)的隱藏
8.關(guān)于虛函數(shù),正確的描述是(A)
A.構(gòu)造函數(shù)不能是虛函數(shù)B.析構(gòu)函數(shù)不能是虛函數(shù)C.虛函數(shù)可以是友元函數(shù)D.虛函數(shù)可以是靜態(tài)成員函數(shù)
9.如果在基類中將成員函數(shù)show聲明為不帶返回值得純虛函數(shù),正確的寫法是(C)
A.virtualshow()=0;
B.virtualvoidshow()
C.virtualvoidshow()=0;
D.voidshow()=0virtual;
10.使用myFile.open(“sales.dat”,ios::app)語句打開文件sales.dat后,則(A)
A.該文件只能用于輸出
B.該文件只能用于輸入
C.該文件既能用于輸出,又能用于輸入
D.若該文件存在,則清除該文件的內(nèi)容
二、分析下列程序中的錯誤,并說明原因(前2題每題6分,第三題8分,共20分)
1.#include"iostream.h"
classstudent
{
charname[10];
intage;
floataver;
voidprintStu(){}
};
voidmain()
{
studentp1,p2,p3;
p1.age=16;
//…
}
2.#include"iostream.h"
classstack
{
public:
stack(intsz);
private:
char*p;
intsize;
};
stack::stack(intsz)
{
p=newchar[size=sz];
}
voidmain()
{
stackstt;
//...
}
3.#include"iostream.h"
classCTest
{
public:
constinty2;
CTest(inti1,inti2):y1(i1),y2(i2)
{
y1=10;
x=y1;
}
intreadme()const;
//...
private:
intx;
constinty1;
};
intCTest::readme()const
{
inti;
i=x;
x++;
returnx;
}
voidmain()
{
CTestc(2,8);
inti=c.y2;
i=c.y1;
}
三、寫出下列程序的運行結(jié)果(前2題每題6分,第三題8分,共20分)
1.#include"iostream.h"
classtoy
{
public:
toy(intq,intp)
{quan=q;price=p;}
intget_quan()
{returnquan;}
intget_price()
{returnprice;}
private:
intquan,price;
};
intmain()
{
toyop[2][2]={toy(10,20),toy(30,48),toy(50,68),toy(70,80)};
inti;
for(i=0;i<2;i++)
{
cout<<op[i][0].get_quan()<<",";
cout<<op[i][0].get_price()<<"\n";
cout<<op[i][1].get_quan()<<",";
cout<<op[i][1].get_price()<<"\n";
}
cout<<"\n";
return0;
}
2.#include"iostream.h"
classStock
{
public:
voidprint()
{cout<<"Stockclass.\n";}
};
classDer1_Stock:publicStock
{
public:
voidprint()
{cout<<"Deri1_Stockclass.\n";}
};
classDer2_Stock:publicStock
{
public:
voidprint()
{cout<<"Deri2_Stockclass.\n";}
};
voidmain()
{
Stocks1;
Stock*ptr;
Der1_Stockd1;
Der2_Stockd2;
ptr=&s1;
ptr->print();
ptr=&d1;
ptr->print();
ptr=&d2;
ptr->print();
}
3.#include"iostream.h"
classA
{
public:
A(inti):xi(i){}
A(){xi=0;}
friendAoperator++(Aa);
friendAoperator--(A&a);
voidprint();
private:
intxi;
};
Aoperator++(Aa)
{
++a.xi;
returna;
}
Aoperator--(A&a)
{
--a.xi;
returna;
}
voidA::print()
{cout<<xi<<endl;}
voidmain()
{
Ai(7);
++i;
i.print();
--i;
i.print();
}
二
1.答案:p1.age=16;有錯(3分),因為age是私有數(shù)據(jù)成員,不能直接訪問(3分)
2.答案:stackstt;有錯,(3分)類中沒有定義無參構(gòu)造函數(shù)(3分)
3.答案:錯誤1:y1=10;有錯(2分),y1是常成員,不能修改(1分)
錯誤2:x++;有錯(2分),readme函數(shù)是常成員函數(shù),不能修改對象的數(shù)據(jù)成員(1分)
錯誤3:i=c.y1;有錯(1分),y1是私有變量,不能直接存取(1分)
三
1.答案:10,20;30,48;50,6870,80
2.答案:Stockclass.
Stockclass.
Stockclass.
3.答案:7
6
B卷
一、選擇題(每題2分,共20分,答案填寫在題后的表格內(nèi))
1.假設(shè)已經(jīng)有定義constchar*constname=”chen”;下面的語句中正確的是(D)
A.name[3]=’a’;
B.name=”lin”;
C.name=newchar[5]
D.cout<<name[3];
2.假設(shè)已經(jīng)有定義const
char*name=”chen”;下面的語句中錯誤的是(A)
A.name[3]=’q’;
B.name=”lin”;
C.name=newchar[5]
D.name=newchar(‘q’);
3.在下面有關(guān)對構(gòu)造函數(shù)的描述中,正確的是(B)
A.構(gòu)造函數(shù)可以帶有返回值
B.構(gòu)造函數(shù)的名字與類名完全相同
C.構(gòu)造函數(shù)必須帶有參數(shù)
D.構(gòu)造函數(shù)必須定義,不能缺省
4.在下面有關(guān)析構(gòu)函數(shù)特征的描述中,正確的是(C)
A.一個類可以定義多個析構(gòu)函數(shù)B.析構(gòu)函數(shù)名與類名完全相同C.析構(gòu)函數(shù)不能指定返回類型
D.析構(gòu)函數(shù)可以有一個或多個參數(shù)
5.在下面有關(guān)靜態(tài)成員函數(shù)的描述中,正確的是(B)
A.在靜態(tài)成員函數(shù)中可以使用this指針
B.在建立對象前,就可以為靜態(tài)數(shù)據(jù)成員賦值
C.靜態(tài)成員函數(shù)在類外定義時,要用static前綴
D.靜態(tài)成員函數(shù)只能在類外定義
6.友元的作用之一是(A)
A.提高程序的運行效率
B.加強類的封裝性
C.實現(xiàn)數(shù)據(jù)的隱藏性
D.增加成員函數(shù)的種類
7.假設(shè)已經(jīng)定義好了一個類student,現(xiàn)在要定義類derived,它是從student私有派生的,定義類derived的正確寫法是(C)
A.classderived::studentprivate
B.classderived:studentpublic
C.classderived:privatestudent{//…
}
D.classderived::publicstudent{//…
}
8.要實現(xiàn)動態(tài)聯(lián)編,派生類中的虛函數(shù)(D)
A.返回的類型可以與虛函數(shù)的原型不同B.參數(shù)個數(shù)可以與虛函數(shù)的原型不同C.參數(shù)類型可以與虛函數(shù)的原型不同D.以上都不對
9.有關(guān)運算符重載正確的描述是(D)
A.C++語言允許在重載運算符時改變運算符的操作個數(shù)
B.C++語言允許在重載運算符時改變運算符的優(yōu)先級
C.C++語言允許在重載運算符時改變運算符的結(jié)合性
D.C++語言允許在重載運算符時改變運算符的原來的功能
10.假設(shè)定義了函數(shù)模板:
template<classT>
Tmax(Tx,Ty)
{return(x>y)?x:y;}
并定義了inti=6;charc=’a’;錯誤的調(diào)用語句是(D)
A.max(i,i)
B.max(c,c)
C.max((int)c,i)
D.max(i,c)
二、分析下列程序中的錯誤,并說明原因(前2題每題6分,第三題8分,共20分)
1.#include"iostream.h"
classpoint
{public:
intx,y;
private:
point(){x=1;y=2;}};
voidmain()
{pointcpoint;
cpoint.x=2;}
2.#include"iostream.h"
template<classT>
classStack
{public:
Stack(intsz)
{v=p=newT[size=sz];}
~Stack()
{delete[]v;}
voidpush(Tx)
{*p++=x;}
Tpop()
{return*--p;}
intlenth()const
{return(p-v);}
private:
T*v,*p;
intsize;};
voidmain()
{Stack
obj(5);
obj.push(10);}
3.#include"iostream.h"
classstudent
{intsno;
intage;
voidprintStu();
voidsetSno(intd);};
voidprintStu()
{cout<<”\nStudentNo.is“<<sno<<”,”;cout<<”ageis”<<age<<”.”<<endl;}
voidsetSno(intd)
{sno=d;}
voidsetAge(inta)
{age=a;}
voidmain()
{studentlin;
lin.setSno(20021);
lin.setAge(20);
lin.printStu();}
三、寫出下列程序的運行結(jié)果(前2題每題6分,第三題8分,共20分)
1.#include"iostream.h"
classb1
{public:
b1(intii)
{i=ii;}
voiddisplay()
{cout<<i<<endl;}
protected:
inti;};
classb2
{public:
b2(intjj)
{j=jj;}
voiddisplay()
{cout<<j<<endl;}
protected:
intj;};
classb3:publicb1,publicb2
{public:
b3(intii,intjj,intkk):b1(ii),b2(jj)
{k=kk;}
voidsetall(intii,intjj,intkk)
{i=ii;j=jj;k=kk;}
voiddisplay()
{cout<<i<<endl;
cout<<j<<endl;
cout<<k<<endl;}
private:
intk;};
voidmain()
{b1o1(40);
o1.display();
b2o2(50);
o2.display();
b3o3(10,20,30);
o3.display();
o3.setall(50,60,70);
o3.display();}
2.#include"iostream.h"
classStock
{public:
virtualvoidprint()
{cout<<"Stockclass.\n";}};
classDer1_Stock:publicStock
{public:
voidprint()
{cout<<"Deri1_Stockclass.\n";}};
classDer2_Stock:publicStock
{public:
voidprint()
{cout<<"Deri2_Stockclass.\n";}};
voidmain()
{Stocks1;
Stock*ptr;
Der1_Stockd1;
Der2_Stockd2;
ptr=&s1;
ptr->print();
ptr=&d1;
ptr->print();
ptr=&d2;
ptr->print();}
3.#include<iostream.h>
constintsize=10;
template<classType>
//聲明一個類模板
classstack
{public:
voidinit(){tos=0;}
voidpush(Typech);
//參數(shù)取Type類型
Typepop();
//返回類型取Type類型
private:
Typestck[size];
//數(shù)組的類型為類型參數(shù)Type,即可取任意類型
inttos;};
template<classType>
voidstack<Type>::push(Typeob)
{if(tos==size){cout<<"stackisfull";return;}
stck[tos]=ob;tos++;}
template<classType>
Typestack<Type>::pop()
{if(tos==0)
{cout<<"stackisempty";
return0;}
tos--;
returnstck[tos];}
intmain()
{
//定義字符堆棧
stack<char>s1,s2;
//創(chuàng)建兩個模板參數(shù)為char型的對象
inti;
s1.init();
s2.init();
s1.push('a');s2.push('x');
s1.push('b');s2.push('y');
s1.push('c');s2.push('z');
for(i=0;i<3;i++)cout<<"pops1:"<<s1.pop()<<endl;
for(i=0;i<3;i++)cout<<"pops2:"<<s2.pop()<<endl;
return0;}
二、分析下列程序中的錯誤,并說明原因(前2題每題6分,第三題8分,共20分)
1.答案:pointcpoint;是錯誤的(3分),因為構(gòu)造函數(shù)是私有成員(3分)
2.答案:Stack
obj(5);有錯(3分),因為Stack是類模板,應(yīng)將模板實例化,才可定義對象(3分)
3.答案:錯誤1:printStu、setSno兩個成員函數(shù)不是公有成員,不允許在類外訪問(4分)
錯誤2:成員函數(shù)在類外定義,應(yīng)加上類名“student::”(2分)
錯誤3:setAge函數(shù)應(yīng)在類中說明(2分)
三、寫出下列程序的運行結(jié)果(前2題每題6分,第三題8分,共20分)
1.答案:40
50
10
20
30
506070
2.答案:Stockclass.
Deri1_Stockclass.
Deri2_Stockclass.
3.答案:pops1:c
pops1:b
pops1:a
pops2:z
pops2:y
pops2:xA
卷
一、單項選擇題:(每小題2分,共20分)
1、假設(shè)已經(jīng)有定義constchar*name=”chen”;下列語句中錯誤的是_____________
A.name[3]=’q’
B.name=”lin”
C.name=newchar[5]
D.name=newchar(‘q’)
2、在下列關(guān)鍵字中,用于說明類中公有成員的是____________
A.public
B.private
C.protected
D.friend
3、下列哪項不是面向?qū)ο蟪绦蛟O(shè)計的主要特征_______________。
A.封裝
B.繼承
D.多態(tài)
D.結(jié)構(gòu)
4、構(gòu)造函數(shù)是在__________時被執(zhí)行的。
A.程序編譯
B.創(chuàng)建對象C.創(chuàng)建類
D.程序裝入內(nèi)存
5、在下面有關(guān)析構(gòu)函數(shù)的描述中,正確的是____________
A.一個類中可以定義多個析構(gòu)函數(shù)
B.析構(gòu)函數(shù)的名字和類名完全相同
C.析構(gòu)函數(shù)不能指定返回類型
D.析構(gòu)函數(shù)可以有一個或多個參數(shù)
6、使用派生類的主要原因是_______________
A.提高代碼的可充用性
B.提高程序的運行效率
C.加強類的封裝性
D.實現(xiàn)數(shù)據(jù)的隱藏
7、下列的各函數(shù)中,___________不是類的成員函數(shù).
A.構(gòu)造函數(shù)
B.析構(gòu)函數(shù)
C.友元函數(shù)
D.拷貝構(gòu)造函數(shù)
8、關(guān)于虛函數(shù),正確的描述是_______________
A.構(gòu)造函數(shù)不能是虛函數(shù)
B.析構(gòu)函數(shù)不能是虛函數(shù)
C.虛函數(shù)可以是友元函數(shù)
D.虛函數(shù)可以是靜態(tài)成員函數(shù)
9、友元的作用之一是____________
A.提高程序的運用效率
B.加強類的封裝性
C.實現(xiàn)數(shù)據(jù)的隱藏性
D.增加成員函數(shù)的種類
10、在下面有關(guān)靜態(tài)成員函數(shù)的描述中,正確的是________________
A.在靜態(tài)成員函數(shù)中可以使用this指針
B.在建立對象前,就可以為靜態(tài)數(shù)據(jù)成員賦值
C.靜態(tài)成員函數(shù)在類外定義時,要用static前綴
D.靜態(tài)成員函數(shù)只能在類外定義
得
分
評卷人
二、判斷題:(每題1分,共10分)
(
)1、使用關(guān)鍵字class定義的類中缺省的訪問權(quán)限是私有(private)的。
(
)2、構(gòu)造函數(shù)和析構(gòu)函數(shù)都不能重載。
(
)3、說明或定義對象時,類名前不需加關(guān)鍵字class。
(
)4、可以在類的構(gòu)造函數(shù)中對靜態(tài)數(shù)據(jù)成員進行初始化。
(
)5、protected和private區(qū)別在于protected成員可以被派生類訪問,而private成員則不能被派生類訪問。
(
)6、在C++中,封裝是通過類實現(xiàn)的。
(
)7、無論何時編譯器都為類構(gòu)造一個無參數(shù)的缺省的構(gòu)造函數(shù)。
(
)8、無論什么方式的繼承,基類的私有成員都不能被派生類訪問。
(
)9、在c++中,只有在類對象定義之后才能給數(shù)據(jù)成員賦初值。
(
)10、創(chuàng)建派生類對象時,先調(diào)用基類的構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù)。
得
分
評卷人1、受保護成員
2、同類對象的引用
3、封裝
4、公有的
5、封裝,繼承
6、基類
7、作用域分隔符限定,構(gòu)造函數(shù),析構(gòu)函數(shù)
三、填空題:(每空1分,共10分)
1、在C++中,類的成員訪問權(quán)限分別是:公有成員,私有成員和_________________。
2、拷貝構(gòu)造函數(shù)使用_______________作為參數(shù)初始化創(chuàng)建中的對象。
3、在C++中,雖然友元提供了類之間數(shù)據(jù)進行訪問的一種方式,但它破壞了面向?qū)ο蟪绦蛟O(shè)計的______________特性。
4、在公有繼承的情況下,基類數(shù)據(jù)成員在派生類中的訪問權(quán)限__________________。
5、在面向?qū)ο蟮某绦蛟O(shè)計中,通過________實現(xiàn)數(shù)據(jù)隱藏;通過________實現(xiàn)代碼的復(fù)用。
6、在C++中,構(gòu)造派生類對象時,總是先從_________的初始化開始的。
7、在基類和派生類中,派生類可以定義其基類中不具備的數(shù)據(jù)和操作。對兩個有相同名字的數(shù)據(jù)成員進行訪問時,如果沒有___________,對此數(shù)據(jù)成員的訪問將出現(xiàn)歧義;而________、_________和operator=是不能被派生類繼承的。
得
分
評卷人
四、寫出程序運行結(jié)果(每題5分,共30分)
1、#include<iostream.h>
2、#include<iostream.h>
int&f(int&i)
inti=15;
{i+=10;returni;}
voidmain()
void
main()
{inti;
{intk=0;
i=100;
int&m=f(k);
::i=i+1;
cout<<k<<endl;
cout<<::i<<endl;
m=20;
}
cout<<k<<endl;
4、#include<iostream.h>
}
#include<stdlib.h>
3、#include<iostream.h>
classtimer{
classdate{
public:timer(){seconds=0;}
public:voidsetdate(inty,intm,intd);
timer(char*t){seconds=atoi(t);}
voidshowdate();
timer(intt){seconds=t;}
private:intyear,month,day;};
timer(intmin,intsec){seconds=min*60+sec;}
voiddate::setdate((inty,intm,intd)
intgettime(){returnseconds;}
{year=y;month=d;day=d;}
private:seconds;};
voiddate::showdate()
voidmain()
{cout<<year<<”.”<<month<<”.”<<day<<endl;}
{timera,b(10),c(“20”),d(1,10);
voidmain()
cout<<”seconds1=”<<a.gettime()<<endl;
{datedate1,date2;
cout<<”seconds2=”<<b.gettime()<<endl;
date1.setdate(2000,4,28);
cout<<”seconds3=”<<c.gettime()<<endl;
date1.showdate();
cout<<”seconds4=”<<d.gettime()<<endl;}
date2.setdate(2006,10,25);
6、#include<iostream.h>
date2.showdate();}
classbase{
5、#include<iostream.h>
public:base(intsa){a=sa;
classbase
cout<<”constructingbase”<<endl;}
{intn;
private:inta;};
public:base(inta)
classbase1:virtualpublicbase{
{cout<<"constructingbaseclass"<<endl;
public:base1(intsa,intsb):base(sa)
n=a;
{b=sb;
cout<<"n="<<n<<endl;}
cout<<”constructingbase1”<<endl;}
~base(){cout<<"destructingbaseclass"<<endl;}};
private:intb;};
classsubs:publicbase
classbase2:virtualpublicbase{
{basebobj;
public:base2(intsa,intsc)::base(sa)
intm;
{c=sc;
public:subs(inta,intb,intc):base(a),bobj(c)
cout<<”constructingbase2”<<endl;}
{
private:intc;};
cout<<"constructingsubcass"<<endl;
classderived:publicbase1,publicbase2{
m=b;
public:derived(intsa,intsb,intsc,intsd):
cout<<"m="<<m<<endl;
base(sa),base1(sa,sb),base2(sa,sc)
}
{d=sd;
~subs(){cout<<"destructingsubclass"<<endl;}
cout<<”constructingderived”<<endl;}
};
private:intd;};
voidmain(){subss(1,2,3);}
main(){derivedobj(2,4,6,8);return0;}
一、單項選擇題:(每小題2分,共20分)
AADBC
ACAAB
二、判斷題:(每題1分,共10分)
對錯對錯對
對錯對對對
三、填空題:(每空1分,共10分)
1、受保護成員
2、同類對象的引用
3、封裝
4、公有的
5、封裝,繼承
6、基類
7、作用域分隔符限定,構(gòu)造函數(shù),析構(gòu)函數(shù)
四、寫出程序運行結(jié)果(每題5分,共30分)
1、10
20
2、101
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工廠原料轉(zhuǎn)讓合同范例
- 托管運營合同范文
- 攝影設(shè)備租借合同范本
- 包裝服務(wù)合同模板2024年
- Castleman病的診斷與治療
- 2024年房屋建筑施工安全責(zé)任協(xié)議書范文
- 產(chǎn)品與企業(yè)文化廣告創(chuàng)意合作協(xié)議
- 合伙權(quán)益出售合同樣本
- 居間合同范本樣本
- 高校校舍擴建協(xié)議范本
- 2024年六年級上冊教科版小學(xué)科學(xué)全冊教案全
- 鋼結(jié)構(gòu)工程施工(第五版) 課件 單元六 鋼結(jié)構(gòu)施工驗收
- 雨季施工安全措施
- 滬教版四年級上冊期中測試數(shù)學(xué)試卷
- 當(dāng)代社會政策分析 課件 第五章 健康社會政策
- 投資戰(zhàn)略合作協(xié)議書模板范本
- 商會聯(lián)誼晚宴方案
- 部編版六年級年冊《第四單元習(xí)作 筆尖流出的故事》課件
- 神經(jīng)內(nèi)科護士進修匯報
- 探索項目化作文實施路徑與策略
- 2024年國家能源集團招聘筆試參考題庫含答案解析
評論
0/150
提交評論