c++テスト


一、簡単な解答問題(各問題2点)
1,クラスの定義
2、クラスの特徴
3、クラスとオブジェクトの関係
4、類と構造体の異同
5,派生クラスにサブオブジェクトが存在する場合,オブジェクトを生成する際の構造順序は何であり,解析順序は何であるか
6,クラスの解析関数はなぜ一般的に虚解析関数として定義されるのか
7,クラスの静的メンバー変数およびconstメンバー変数の初期化状況
8,クラスの静的メンバー関数およびconstメンバー関数の使用状況
9、静的メンバー変数と一般メンバー変数の違い、静的メンバー変数とグローバル変数の違い
10、空のクラスの場合、デフォルトで生成されるクラスメンバー関数
11,コンストラクション関数とコンストラクション関数のリロード
12,コンストラクション関数explicitと一般コンストラクション関数の違い
13,レプリケーション構造関数とは何か,どのような場合にそれを使用するか,神のレプリケーションと浅いレプリケーションとは何か
14,コンパイラがデフォルトのレプリケーションコンストラクタを生成するのはいつですか.どのような場合に生成されませんか.コンストラクタが1つ書かれている場合、コンパイラはレプリケーションコンストラクタを生成しますか.
15、複製構造関数と賦値関数の違い
16,テンポラリオブジェクトとは何か,テンポラリオブジェクトがどのような場合に生成されるか
17,どのようなタイプの変数で初期化リストのみを使用して初期化できますか
18、クラスの友元関数とは何か、クラスの友元関数は何種類あるか、クラスの友元関数はクラスのメンバーに対するアクセス権
19,インライン関数とマクロ定義の違い,インライン関数が一般的に用いられる場合,インライン関数の欠点
20,クラスの継承はいくつかの方式に分けられ,派生クラスが継承後にベースクラスへのアクセスにどのような状況があるか
21,多重継承時にマルチパスアクセス競合問題(二義性)をどのように解決するか
22、普通継承と虚継承のメモリ状況を描く
23,虚関数はマルチパスアクセス競合の問題をどのように解決するか
24,マルチステートとは何か,虚関数はどのようにマルチステートを実現するか
25,虚関数はどのように動的バインドを実現するか
26,純虚関数の役割,抽象クラスの役割および使用上の注意点
27,関数リロードの内部メカニズムは何ですか,関数リロードと上書きの違い
28、関数テンプレートの実現メカニズムは何ですか.
29,静的アセンブリとは何か,動的アセンブリとは何か,それぞれ何によって実現されるか
30,参照とは何か,参照の初期化,参照の利点,よく参照される使用上の注意点,参照とポインタの違い,なぜ参照がポインタより安全なのか
31,new/deleteとmalloc/freeの違い
32汎用プログラミングとは
33、関数テンプレートとクラステンプレートは何ですか.違いは何ですか.
34、テンプレートの使用にどのような欠点があり、どのように回避するか
35,テンプレートの特化とは何か,一部のテンプレートの特化とすべてのテンプレートの特化とは何かの違いがある
36,STLとは
37,STLシーケンスコンテナはどれらがあります
38,STLがvectorを実現する方法を具体的に説明する
39,listとvectorの違い
40,dequeのメモリがどのように割り当てられているか,vectorとどのような違いがあるか
41,STLは何種類のアダプターがあって、それぞれ使う情況は何です
42、関数オブジェクトとは
43 vectorでカスタムソートを実現する方法
 
二、プログラム問題を読む(各問題2点)
1,次のコードの出力文は0を出力しますか?どうして?
struct Test
{
Int m_i;
Test(int i):m_i(i){}
Test(){Test(0)}
};
Int main()
{
Test test;
Cout << test.m_i << endl;
}
2,コンストラクション関数およびコンストラクション関数の実行順序を書き出します
Class A
{
Private :
     Int a;
Public:
A(int aa){cout << “A()” << endl; a = aa;}
~A(){cout << “~A()    ” << a << endl;}
};
Class B
{
Private:
Int b;
Public:
    B(int aa = 0, int bb = 0):A(aa), B(bb){cout << “B()” << endl;}
   ~B(){cout << “~B()   ” << b << endl;}
};
3,コード実行の結果を書き出します
Class B
{
Public:
B(){cout << “B() default constructor” << endl;}
B(B &b){cout << “copy constructor” << endl; data = b.data;}
B(int i):data(i){cout << “constructed by parameter: ” << data << endl;}
~B(){cout << “~B() destructed” << endl;}
};
B play( B b)
{
    Return b;
}
Main()
{
B t1 = play(5);
B t2 = play(t1);
}
 
Main()
{
B t1 = play(5);
B t2 = play(10);
 
}
 
三、プログラミング問題(各問題4点)
1,MyStringクラスの実装
2,テンプレートチェーンテーブルの実現