C++的復習題

          時間:2021-06-13 13:28:29 試題 我要投稿
          • 相關推薦

          C++的復習題

            一、單項選擇題(本大題共10小題,每小題2分,共20分)

            在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內。錯選、多選或未選均無分。

            1.下列關于類的說法中,錯誤的是( )

            A)類是一種用戶自定義的數據類型 B)如果不作特別聲明,類所有成員均為私有類型

            C)任何一個對象只能屬于一個具體的類 D)只有類中的成員函數才能存取類中的私有數據

            2.下列情況中,不會調用拷貝構造函數的是( )

            A)用一個對象去初始化同一類的另一個新對象時

            B)將類的一個對象賦予該類的另一個對象時

            C)函數的形參是類的對象,調用函數進行形參和實參結合時

            D)函數的返回值是類的對象,函數執行返回調用時

            3.在C++中,用于實現運行時多態性的是( )

            A)內聯函數 B)重載函數 C)模板函數 D)虛函數

            4. 如果類A被說明為類B的友元,則( )

            A)類A的成員即類B的成員 B) 類A的成員函數可以訪問類B的成員 C類B的成員函數可以訪問類A的成員 D)類B是類A的友元

            5.友元函數重載一個運算符時,如果參數表中沒有任何參數,則說明該運算符是( )

            A)一元運算符 B)二元運算符 C)重載錯誤 D)選項A)和選項B)都有可能

            6.假定X為一個類,執行X a[3],*p[2];語句會自動調用該類的`構造函數( )次

            A)2 B)3 C)4 D)5

            7.下列有關繼承和派生的敘述中,正確的是( )

            A)如果一個派生類私有繼承其基類,則該派生類對象不能訪問基類的保護成員

            B)派生類的成員函數可以訪問基類的所有成員

            C)基類對象可以賦值給派生類對象

            D)如果派生類沒有實現基類的一個純虛函數,則該派生類是一個抽象類

            8.關于對多繼承的二義性的描述中,錯誤的是( )

            A)一個派生類和基類中都有某個同名成員,在派生類中對這個成員的訪問可能出現二義性

            B)解決二義性的最常用的方法是對成員名的限定法

            C)基類和派生類同時出現同名函數,也存在二義性問題

            D)一個派生類是從兩個基類派生而來的,而這兩個基類又有一個共同的基類,對該基類成員進行訪問時,可能出現二義性

            9.下列關于純虛函數和抽象類的描述中,錯誤的是( )

            A)純虛函數時一種特殊的虛函數,它沒有具體實現

            B)抽象類是指具有純虛函數的類

            C)一個基類中說明有虛函數,該基類的派生類一定不再是抽象類

            D)抽象類只能作為基類來使用,其純虛函數的實現由派生類給出

            10.下列關于模板的敘述中,錯誤的是( ) A)模板聲明中的第一個符號總是關鍵字template

            B)在模板聲明中用 < > 括起來的部分是模板的形參表 C)類模板不能有數據成員

            D)在一定條件下函數模板的實參可以省略

            二、填空題(本大題共6空,每空2分,共12分)

            1._________是一種特殊的成員函數,它主要用來為對象分配空間,對類的成員進行初始化并執行對象的其它內部管理操作。

            2.定義在類內部的函數為類默認狀態的_________,在類外部每次調用該函數時,相應的函數代碼都會在調用函數位置展開。

            3.要想把類的一般成員函數說明為類的常成員函數,則應該使用關鍵字_________。 4.當一個類的成員函數被調用時,該成員函數的_________指向調用它的對象。 5.C++中模板可分為_________和_________。

            三、閱讀程序,寫出執行結果(本題有5個小題,每小題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個小題,每題6分,共18分)

            1.對于下面定義的類Myclass,請在函數f( )中添加對象成員把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.在下面橫線處填上適當語句,完成類中靜態數據成員的定義。

            class test

            {

            private:

            static int x;

            public:

            };

            _____①______;//將x的值初始化為10

            _____②_______{return x;} //定義靜態成員函數

            3. 下列是二維向量vector2D的定義,其中作為成員函數重載的運算符"+"的功能是將兩向量

            的分量x和y對應相加,然后返回作為相加結果的新對象。請補充完整:

            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++的復習題】相關文章:

          c++程序畢業實習報告03-03

          c++程序實習報告模板03-14

          c++泛型算法的總結11-08

          c++程序員簡歷模板05-19

          監管合同復習題06-17

          小學數學精選復習題06-16

          《納米材料》復習題06-16

          因數與倍數復習題06-16

          數學的復習題訓練06-16

          国产精品好爽好紧好大_亚洲男人综合久久综合_欧美福利电影a在线播放www_国产精品99久久精品无码

                  亚洲欧美日韩综合一区二区 | 日本中文无线码在线观看 | 综合国产精品一区二区三区 | 在线成人国产公开视频 | 亚洲欧美在线看h片 | 中文有码国产精品欧美 |