};
int main()
{ test ?A(3);
return 0;
}
運(yùn)行時(shí)輸出的結(jié)果是( D? )
A)3
B)constructor
? ??destruclor
C)copy constructor
destructor??
D)3
? destructor
30在 C++中,編譯系統(tǒng)自動(dòng)為一個(gè)類生成缺省構(gòu)造函數(shù)的條件是(C)。
A)該類沒有定義任何有參構(gòu)造函數(shù)
B)該類沒有定義任何無參構(gòu)造函數(shù)
C)該類沒有定義任何構(gòu)造函數(shù)
D)該類沒有定義任何成員函數(shù)
31有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(int i=0){cout<<1;}
MyClass(const MyClass&x){cout<<2;}
MyClass& operator=(const MyClass&x){???? cout<<3; return*this;}
~MyClass(){cout<<4;}
};
int main(){
MyClass obj1(1),obj2(2),obj3(obj1);
return 0:
}
運(yùn)行時(shí)的輸出結(jié)果是(A)。
A)112444 ??? ??????? ??????? B)11114444
C)121444????? ??????? ??????? ??????? D)11314444
關(guān)于new運(yùn)算符的下列描述中,(?)是錯(cuò)誤的。?
A、?它可以用來動(dòng)態(tài)創(chuàng)建對(duì)象和對(duì)象數(shù)組;?
B、使用它創(chuàng)建的對(duì)象或?qū)ο髷?shù)組可以使用運(yùn)算符delete刪除;
?C、使用它創(chuàng)建對(duì)象時(shí)要調(diào)用構(gòu)造函數(shù);
?D、使用它創(chuàng)建對(duì)象數(shù)組時(shí)必須指定初始值;
?
在公有派生情況下,有關(guān)派生類對(duì)象和基類對(duì)象的關(guān)系,不正確的敘述是(?)。???????
派生類的對(duì)象可以賦給基類的對(duì)象??????派生類的對(duì)象可以初始化基類的引用? 派生類的對(duì)象可以直接訪問基類中的成員?
D. 派生類的對(duì)象的地址可以賦給指向基類的指針
class?XA{?int?x;??public:???XA(int?n)?{x=n;}??};?
class?XB:?public?XA{?
?? ?int?y;???
public:?
??? XB(int?a,int?b);?};?
在構(gòu)造函數(shù)XB的下列定義中,正確的是( )。?????
XB::XB(int?a,int?b):x(a),y(b){?}??????? ?XB::XB(int?a,int?b):XA(a),y(b)?{ }??????? ?XB::XB(int?a,int?b):x(a),XB(b){?}????????XB::XB(int?a,int?b):XA(a),XB(b){?}
實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài)性用(? )?。?
A、重載函數(shù)?B、構(gòu)造函數(shù)?C、析構(gòu)函數(shù)?D、虛函數(shù)
一個(gè)函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,則應(yīng)把它定義為()
內(nèi)聯(lián)函數(shù)?B.?重載函數(shù)?C.?遞歸函數(shù)?D.?嵌套函數(shù)
所謂多態(tài)性是指?( )?
不同的對(duì)象調(diào)用不同名稱的函數(shù) 不同的對(duì)象調(diào)用相同名稱的函數(shù)?一個(gè)對(duì)象調(diào)用不同名稱的函數(shù)?一個(gè)對(duì)象調(diào)用不同名稱的對(duì)象
在公有派生類的成員函數(shù)不能直接訪問基類中繼承來的某個(gè)成員,則該成員一定是基類中?
的()?
私有成員?B.?公有成員?C.?保護(hù)成員?D.?保護(hù)成員或私有成員
對(duì)基類和派生類的關(guān)系描述中,錯(cuò)誤的是()?
派生類是基類的具體化 基類繼承了派生類的屬性?派生類是基類定義的延續(xù)?派生類是基類的特殊化
在C++中,要實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)(動(dòng)態(tài)聯(lián)編),必須使用( )調(diào)用虛函數(shù)。
? A.類名? B.派生類指針? C.對(duì)象名? D.基類指針
//靜態(tài)聯(lián)編:在編譯時(shí)就確定函數(shù)的調(diào)用和被調(diào)用關(guān)系
//動(dòng)態(tài)聯(lián)編:在運(yùn)行時(shí)就確定函數(shù)的調(diào)用和被調(diào)用關(guān)系
當(dāng)一個(gè)類的某個(gè)函數(shù)被說明為virtual時(shí),該函數(shù)在該類的所有派生類中()。??????
?A.都是虛函數(shù)????????
?B.只有被重新說明時(shí)才是虛函數(shù)????????
?C.只有被重新說明為virtual時(shí)才是虛函數(shù)?????
?D.都不是虛函數(shù)
下列描述中,()不是抽象類的特性。???????
??A.可以說明虛函數(shù)?
?B.可以進(jìn)行構(gòu)造函數(shù)重載????????
?C.可以定義友元函數(shù)?????????
D.能定義其對(duì)象?
?類繼承中,缺省的繼承方式是_____.
A public??? B private?? C? protected? D 以上都不是
1.C++中多態(tài)性包括兩種多態(tài)性:??(編譯時(shí)的)??和??(運(yùn)行時(shí)的)??。前者是通過?(函數(shù)和運(yùn)算符的重載 )?實(shí)現(xiàn)的,
而后者是通過??(類繼承關(guān)系)?和??(虛函數(shù))??來實(shí)現(xiàn)的。
2. 如果一個(gè)類中有一個(gè)或多個(gè)純虛函數(shù),則這個(gè)類稱為 (抽象類)。
答案:
?ACBDAAD?? ACCCBDB? CBDABABDADB
編程題
某學(xué)校對(duì)教師每月工資的計(jì)算公式如下:固定工資+額外補(bǔ)貼。教授的固定工資為5000元,每個(gè)課時(shí)補(bǔ)貼50元;副教授的固定工資為3000元,每個(gè)課時(shí)補(bǔ)貼為30元;講師的固定工資為2000元,每個(gè)課時(shí)補(bǔ)20元。定義教師抽象類,派生不同職稱的教師類,編寫程序求若干教師的月工資。
?#include
#include
using namespace std;
class Stu {
public:?
??? virtual void sum(int h)= 0;
};
class Professor :public Stu {
??? int h;
public:
??? Professor(int hour=0) { h = hour; }
??? void sum(int h=0) { cout<<"該人工資為:" << 5000 + 50 * h << endl; }
};
class Associate_professor :public Stu {
??? int h;
public:
??? Associate_professor(int hour=0) { h = hour; }
??? void sum(int h=0) { cout << "該人工資為:" << 3000 + 30 * h << endl; }
};
class Lecturer :public Stu {
??? int h;
public:
??? Lecturer(int hour=0) { h = hour; }
??? void sum(int h=0) { cout << "該人工資為:" << 2000 + 20 * h << endl; }
};
int main()
{
??? Stu* s;
??? Professor p(50);
??? Associate_professor a(50);
??? Lecturer l(50);
??? s = &p;
??? s->sum(50);
??? s = &a;
??? s->sum(50);
??? s = &l;
??? s->sum(50);
??? return 0;
編程實(shí)現(xiàn)基類Employee,派生類Manager和HourlyWorker。Employee有數(shù)據(jù)成員name和ID;Manager有數(shù)據(jù)成員sal,代表經(jīng)理的月工資; HourlyWorker有wage,hours和sal,分別代表鐘點(diǎn)工的每小時(shí)工資數(shù)、月工作時(shí)數(shù)和月工資總數(shù),并創(chuàng)建成員函數(shù)salllay()求出鐘點(diǎn)工的月工資總數(shù)=每小時(shí)工資數(shù)*月工作時(shí)數(shù)。定義的所有類中都必須包含構(gòu)造函數(shù),最終輸出所有數(shù)據(jù)的值。
#include
#include
using namespace std;
class Employee {
??? string name;
??? string ID;
public:
??? Employee(string n, string i) { name=n; ID=i; }
??? void eshow() { cout << name << " " << ID<<" "; }
};
class Manager :public Employee{
??? int sal;
public:
??? Manager(string n, string i,int s):Employee(n,i) { sal = s; }
??? void mshow() { eshow(); cout << sal << endl; }
};
class HourlyWorker :public Employee{
??? double wage;
??? int hours;
public:
??? HourlyWorker(string n, string i, double w, int h) :Employee(n, i) { wage = w; hours = h; }
??? double salllay() {
??????? double money = wage * hours;
??????? return money;
??? }
??? void hshow(){ eshow(); cout << salllay() << endl; }
};
int main()
{
??? Manager m1("laowang", "10086", 15000);
??? m1.mshow();
??? HourlyWorker h1("xiaowang", "1008611", 30, 240);
??? h1.hshow();
??? return 0;
使用模板和動(dòng)態(tài)內(nèi)存分配實(shí)現(xiàn)可變長(zhǎng)數(shù)組
(1)了解程序運(yùn)行時(shí)動(dòng)態(tài)內(nèi)存分配的概念與方法
(2)掌握動(dòng)態(tài)內(nèi)存管理的方法
#include
#include
using namespace std;
void test2() {
??? int n;
??? cin >> n;
??? int* p = new int[n];//動(dòng)態(tài)分配
??? for (int i = 0; i < n; i++)cin >> p[i];
??? for (int i = 0; i < n; i++)cout << p[i] << endl;
??? delete[]p;
}
class Stu {
??? int sno;
??? string name;
public:
??? Stu(int s = 0, string n = "") { sno = s; name = n; }
??? void setinfo(int s, string n) { sno = s; name = n; }
??? void show() { cout << sno << " " << name << " " << endl; }
??? ~Stu() { cout << name << "被析構(gòu)" << endl; }
};
void test4() {
??? int n;
??? cin >> n;
??? Stu* q = new Stu[n];
??? for (int i = 0; i < n; i++) {
??????? int sno;
??????? string name;
??????? cin >> sno >> name;
??????? q[i].setinfo(sno, name);
??? }
??? for (int i = 0; i < n; i++)q[i].show();
??? delete[]q;
}
int main()
{
??? test4();
??? return 0;
編寫函數(shù)模板,返回兩個(gè)值的最小值,要求能正確處理浮點(diǎn)型,字符型,字符串。
#include
#include
using namespace std;
template
T min(T temp[], int n) {
??? T min = temp[0];
??? for (int i = 0; i < n; i++) {
??????? if (temp[i] < min)
??????? {
???????????? min = temp[i];
??????? }
??? }
??? return min;
}
int main()
{
??? int ia[5] = { 10,7,14,3,25 };
??? double da[4] = { 10.2,7.1,14.5,3.2 };
??? string sa[3] = { "上海","北京","沈陽(yáng)" };
??? cout << min(ia, 5) << endl;
??? cout << min(da, 4)<??? cout << min(sa, 3) << endl;
??? return 0;
創(chuàng)建一個(gè)生日類,該類包含年和月屬性;創(chuàng)建學(xué)生類,其中包含生日類對(duì)象,設(shè)計(jì)學(xué)生類其余屬性及函數(shù),最終輸出學(xué)生所有信息。
#include
#include
using namespace std;
class Birth {
??? int year;
??? int mouth;
public:
??? Birth(int y=0, int m=0) { year = y; mouth = m; }
??? void show() { cout << year << "年" << mouth << "月"<<" "; }
};
class Stu{
??? Birth b;
??? string name;
??? int age;
??? string banji;
??? string xuehao;
public:
??? Stu(Birth B_b, string n, int a, string bj, string xh) {
??????? b = B_b;
??????? name = n;
??????? age = a;
??????? banji = bj;
??????? xuehao = xh;
??? }
??? void Sshow() { b.show(); cout << name << " " << age << " " << xuehao << " " << banji << endl; }
};
int main()
{
??? Stu s1(Birth (2003, 5), "李白", 18, "1903", "1903001");
??? s1.Sshow();
分別采用成員函數(shù)和友元函數(shù)重載實(shí)現(xiàn)復(fù)數(shù)的加法運(yùn)算。
成員函數(shù)重載:
#include
using namespace std;
class Comp {
??? int shi;
??? int xu;
public:
??? int getshi() { return shi; }
??? int getxu() { return xu; }
??? int setshi(int s) { shi = s; return shi; }
??? int setxu(int x) {xu = x; return xu;}
??? Comp(int s = 0, int x = 0) { shi = s; xu = x; }
??? Comp operator+(Comp c) {//全局函數(shù)
??????? Comp sum;
??????? sum.shi = shi + c.shi;
??????? sum.xu = xu + c.xu;
??????? return sum;
}
??? void show() { cout << shi << "+" << xu << "i" << endl; }
???
};
int main()
{
??? Comp c1(2, 3),c2(4,5),c3;
??? c3 = c1 + c2;
??? c3.show();
??? return 0;
}
友元函數(shù)重載:
#include
using namespace std;
class Comp {
??? int shi;
??? int xu;
public:
??? int getshi() { return shi; }
??? int getxu() { return xu; }
??? int setshi(int s) { shi = s; return shi; }
??? int setxu(int x) {xu = x; return xu;}
??? Comp(int s = 0, int x = 0) { shi = s; xu = x; }
??? void show() { cout << shi << "+" << xu << "i" << endl; }
??? friend Comp operator+(const Comp& c1, const Comp& c2);//友元函數(shù)
};
Comp operator+(const Comp &c1, const Comp &c2) {
??? Comp sum;
??? sum.shi = c1.shi + c2.shi;
??? sum.xu = c1.xu+c2.xu;
??? return sum;
}
int main()
{
??? Comp c1(2, 3),c2(4,5),c3;
??? c3 = c1 + c2;
??? c3.show();
??? return 0;
}
定義一個(gè)圓類,屬性為半徑,周長(zhǎng),面積,輸入為半徑,輸出為周長(zhǎng)與面積。(要求必須包含普通構(gòu)造函數(shù)和析構(gòu)函數(shù))
#include
using namespace std;
#define P 3.14;
class Circle {
??? double banjin;
??? double zhouchang;
??? double mianji;
public:
??? Circle(double b) { banjin = b; }
??? ~Circle() { cout << "Circle()函數(shù)已析構(gòu)" << endl; }
??? double Girth()
??? {
??????? zhouchang = 2 * banjin * P;
??????? return zhouchang;
??? }
??? double Area()
??? {
??????? mianji = banjin * banjin * P;
??????? return mianji;
??? }
??? void show() { cout << "周長(zhǎng)為:" << zhouchang << " " << "面積為:" << mianji << endl; }
};
int main()
{
??? Circle c1(2);
??? c1.Area();
??? c1.Girth();
??? c1.show();
創(chuàng)建一個(gè)Student類,利用setName()方法設(shè)置xm屬性(設(shè)成自己的名字),利用setBj()方法設(shè)置bj屬性(設(shè)成所在班級(jí)),然后創(chuàng)建一個(gè)Student對(duì)象,輸出自己的名字和班級(jí),運(yùn)行這個(gè)測(cè)試程序查看輸出結(jié)果。
#include
#include
using namespace std;
class Student {
??? string xm;
??? string bj;
public:
??? string setName(string x) { xm = x; return xm; }
??? string setBj(string b) { bj = b; return bj; }
??? void show() { cout << "姓名:" << xm << " " << "班級(jí):" << bj << endl; }
};
int main()
{
??? Student s1;
??? s1.setName("李白");
??? s1.setBj("1903");
??? s1.show();
計(jì)算機(jī)能直接執(zhí)行的程序是(D)
源程序目標(biāo)程序匯編程序可執(zhí)行程序
已知枚舉類型聲明語(yǔ)句為:
?enum COLOR{WHITE=8,YELLOW,GREEN=5,RED,BLACK};
?則下列說法中正確的是()
枚舉常量YELLOW的值為1枚舉常量RED的值為6枚舉常量BLACK的值為2枚舉常量WHITE的值為1
下列符號(hào)中不屬于C++關(guān)鍵字的是()
BitProtectedPublicPrivate
函數(shù)名相同,而參數(shù)類型不同,這樣的函數(shù)是()
內(nèi)聯(lián)函數(shù)重載函數(shù)同名覆蓋虛函數(shù)
下列數(shù)組定義中錯(cuò)誤的是()
char s[5]=”Hello”;char s[6]=”Hello”;char s[7]=”Hello”;char s[]=”Hello”;
假設(shè)數(shù)組名為fib,下列可用來表示數(shù)組中第二個(gè)元素的是()
*fib*fib+1*fib[1]*(fib+1)
如果進(jìn)棧序列為e1、e2、e3、e4,則不可能的出棧序列是()
e4、e3、e2、e1e2、e4、e3、e1e3、e4、e1、e2e3、e4、e2、e1
下列說法正確的是()
當(dāng)用類的成員函數(shù)實(shí)現(xiàn)運(yùn)算符的重載時(shí),運(yùn)算符右側(cè)操作數(shù)無限制當(dāng)用類的成員函數(shù)實(shí)現(xiàn)運(yùn)算符的重載時(shí),運(yùn)算符左側(cè)操作數(shù)無限制類的友元函數(shù)不能訪問類中的私有成員在C++中,三目運(yùn)算符可以設(shè)置重載函數(shù)
下列說法錯(cuò)誤的是()
派生類可以繼承基類的所有成員派生類不能訪問基類的私有成員抽象類無法定義對(duì)象表示虛函數(shù)的關(guān)鍵字是virtual
關(guān)于賦值兼容規(guī)則說法錯(cuò)誤的是()
基類對(duì)象可以賦值給派生類對(duì)象可以將一個(gè)派生類對(duì)象的地址賦值給其基類的指針變量,反過來則不行派生類對(duì)象可以初始化基類的引用利用虛函數(shù)能夠?qū)崿F(xiàn)基類指針對(duì)派生類中成員的訪問
構(gòu)造函數(shù)的任務(wù)是(),構(gòu)造函數(shù)無(),類中可以有()個(gè)構(gòu)造函數(shù),它們由()區(qū)分,如果類說明中沒有給出構(gòu)造函數(shù),則C++編譯器會(huì)(),一個(gè)類有()個(gè)析構(gòu)函數(shù),()時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用析構(gòu)函數(shù)。如果類α繼承了類β,則類α稱為()類,而類β稱為()類,一個(gè)派生類只有一個(gè)直接基類的情況稱為(),而有多個(gè)直接基類的情況稱為(),繼承體現(xiàn)了類的()層次概念,派生類可以訪問基類中的()成員。動(dòng)態(tài)創(chuàng)建的變量或?qū)ο?,其存?chǔ)位置是在系統(tǒng)的()區(qū)中,申請(qǐng)空間的運(yùn)算符是(),釋放空間的運(yùn)算符是()。在基類中將一個(gè)成員函數(shù)說明成虛函數(shù)后,在其派生類中只要()、()和()完全一樣就認(rèn)為是虛函數(shù),而不必再加關(guān)鍵字()。#include
#include
using namespace std;
int main(){
??????? int n;
??????? char *pc;
??????? cin>>n;
??????? pc=(); //申請(qǐng)包含25個(gè)字符(可裝12個(gè)漢字和一個(gè)結(jié)束符)元素的內(nèi)存空間
??????? ()(pc,”hello!”);//字符串復(fù)制函數(shù)
??????? cout<<()<??????? delete();//撤銷并釋放pe所指向的n個(gè)字符的內(nèi)存空間
??????? return 0;
}
#include
??????? Include
??????? using namespace std;
??????? class Complex{
???????????????? double Real,Image;
??????? public:
???????????????? complex(double r=0.0,double i=0.0){Real=r,Image=i;}//定義構(gòu)造函數(shù)
???????????????? complex(Complex()){
???????????????????????? Real=com.Real;
???????????????????????? Image=com.Image;
???????????????? }//定義拷貝構(gòu)造函數(shù)
???????????????? void Print(){
???????????????????????? cout<<”Real=”<???????????????? }
???????????????? Complex operator+(Complex);
???????????????? Complex operator+(double);
???????????????? Complex operator+=(Complex);
??????? Complex Complex::operator+(() c){
???????????????? Complex Temp(Real+c.Real,Image+c.Image);//顯式說明局部對(duì)象
???????????????? return Temp;
??????? }
??????? Complex Complex::operator+(double d){
???????????????? return Complex((),Image)//隱式說明局部對(duì)象
??????? }
??????? Complex Complex::operator+=(Complex c){
???????????????? Complex temp;//定義temp為了可以返回Complex類型的值,使+=可以連續(xù)使用
???????????????? temp.Real=Real+();
???????????????? temp.Image=Real+();
???????????????? real=();
???????????????? image=();
???????????????? return temp;
??????? }
定義一個(gè)圓類(Circle),屬性為半徑(radius)、圓周長(zhǎng)和面積, 操作為輸入半徑并計(jì)算周長(zhǎng)、面積,輸出半徑、周長(zhǎng)和面積,要求定義構(gòu)造函數(shù)(以半徑為參數(shù),缺省值為0,周長(zhǎng)和面積在構(gòu)造函數(shù)中生成)和復(fù)制構(gòu)造函數(shù)。以圓為基類派生出圓柱體和圓錐,計(jì)算各自體積,要求實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài)性(基類重復(fù)? 可以省略)
???????
柚子快報(bào)激活碼778899分享:C++復(fù)習(xí)題庫(kù)(僅供參考)
http://yzkb.51969.com/
相關(guān)文章