1 CからC ++
1.1ポインタとリファレンス
1つ、ポインター
- ポインタは使用する前に初期化する必要があります。ワイルドポインタのポイントは制御できません
- ポインタ変数が占めるスペースは、整数変数のサイズと同じです(マシンが変わると、32ビットマシンでは4バイトを占有します)。
2、リファレンス
1.2名前空間
変数を使用する前に、名前空間がその場所を決定する必要があります-変数のライフサイクルに影響します
1.3文字列と文字列クラス
- 文字列の最後のビットは、データを配列の形式で格納するための空白ターミネータ0です。したがって、単語配列の長さは、
文字列の長さよりも1長くなります。文字列の関連操作は、Cのライブラリ関数によって実装されます。たとえば、char * strcpy(char * str1、char * str2);ポインタを使用してstrを操作する理由
1. int型のデータを格納する方法char* str1; //只是声明str1 因为没有相对应的内存 所以使用strcpy无法存储 char* str2 = new char[5]; //str2指向一个5个char大小的内存空间
- C ++での文字列の使用https://blog.csdn.net/Wchenchen0/article/details/81042596
- stringはSTLによって提供される文字列クラスで、宣言後に入力データのサイズに従ってメモリサイズを自動的に割り当てます
- 文字列を使用する場合、ヘッダーファイル#includeをファイルの先頭に配置する必要があります。ヘッダーファイルには、文字列オブジェクトを直接初期化できるデフォルトのコンストラクターが含まれています。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1;
s1="chenchen";
cout<<s1<<endl; //chenchen
string s2(s1);
cout<<s2<<endl; //chenchen
string s3("value");
cout<<s3<<endl; //value
string s4(10,'c');
cout<<s4<<endl; //cccccccccc
return 0;
}
- 文字列クラスを使用する場合
1.4変数
- ストレージ
- 発送方法
1.5関数
- C ++の関数パラメーターの意味は、特定のタイプの変数だけでなく、多くの場合、データフローのウィンドウまたは、データ収集と関連する一連の操作、つまりオブジェクト。
- max(a、b);は直接呼び出すことができる関数です
プロセススペース | コンテンツを保存する |
---|---|
コードエリア | コードブロックを保存する |
グローバルデータエリア | グローバルデータ、定数、テキストボリューム、静的グローバル変数、静的ローカル変数 |
ヒープ領域 | プログラムで生成された動的メモリ |
スタックエリア | 関数データ(つまり、ローカル変数)先入れ先出し |
実行可能プログラムファイルは、コンピュータのメモリにロードして実行できます。
1.6関数のオーバーロード
関数はグローバルであり、
パラメーターのタイプ、数量、タイプ、数量、および
パラメーターの順序と同じにすることはできません。パラメーターの数は異なります。
パラメーターのタイプは異なります。
パラメーターの順序は異なり
ます。関数の戻り値に注意せずに、パラメーターのみに従って関数を照合する場合
1.7 externキーワード
- 外部メンバー関数とメンバーデータを宣言するために使用されます
- 変数または関数の前に配置して、変数または関数の定義が別のファイルにあることを示すことができます。この変数または関数を検出すると、コンパイラー
は他のモジュールでその定義を探すように求められます。さらに、キーワードexternはリンク指定にも使用できます
C ++の学習をどこから始めればいいのかわからない。案の定、自分の意志で甘やかすべきではない。今は何も知らない。
2クラスとオブジェクトの作成
2.1クラス
構造を宣言することは、新しい変数の型をカスタマイズすることと同じです。この型を使用して、新しい変数を宣言できます。
- クラスは一般的な用語、抽象的な概念、オブジェクトは具体的な概念
であり、複数のオブジェクトの共通性を抽出して得られる共通部分がクラスです。
2.2コンストラクタ
1つの一致2つのパス3つの構成データメンバー4つのコンストラクターの関数本体を実行
なぜ最初にデータメンバーが作成され、次にコンストラクターの関数本体が実行されると言われているのですか?メンバーは関数のタイトルで宣言されていませんか?
- 機能:
コンストラクターの名前はクラス名と同じ
です。戻り値はありません。Voidは機能せず、型がありません - オブジェクトを作成するときはいつでも、初期化コードを追加する必要があります。独自のコンストラクタを定義する必要があります。オブジェクトが取り消されると、独自のクリーンアップコードを追加する必要があります。独自のデストラクタを定義する必要があります。
2.3デストラクタ
3つのクラスとオブジェクトの使用
ベクトルコンテナー
- あらゆるタイプの動的配列を格納できます
!4オペレーターの過負荷
!5継承と派生
5.1継承
- サブクラスは継承(パブリック/プライベート)を通じて親クラスのいくつかの特性を取得できますが、注意を払ってください
- 例:Bは暗黙的にAに変換されます
・クラスB:public A {}クラスBはクラスAからパブリックに継承されるため、クラスBは暗黙的にクラスAに変換されます
・クラスB {operator A();} C ++には2つの演算子があります1つの役割:演算子のオーバーロードと型変換関数。以下では、主に型変換関数について紹介しますが、その特徴は次のとおりです
。①関数がクラスで定義されている。
②演算子を使用して変更します。変更された関数は変換されるシンバルタイプと呼ばれます。
③関数にはパラメータや戻り値はありませんが、関数本体にreturn文があります。クラスB {operator A();}は、タイプBのオブジェクトをタイプAのオブジェクトに変換するために使用される変換関数です。
・クラスA {A(const B&);}クラスAは、Bのパラメーターでコンストラクターを実装します。 BはAに暗黙的
に変換できますが、クラスA:public B {}は暗黙的に変換できません。クラスBはクラスAの親です。サブクラスには親クラスが含まれています。サブクラスは親に変換できますが、親は変換できません。サブクラスの追加定義部分は、暗黙的にサブクラスに変換できません
5.2
!6ポリモーフィズムと仮想関数
6.1仮想関数仮想
- 仮想関数は、オーバーロードする必要があるクラスのメンバー関数を参照します。基本クラスのポインターまたは参照を使用して継承されたクラスオブジェクトを指す場合、仮想関数が呼び出されると、実際には継承されたクラスのバージョンが呼び出されます
- https://www.cnblogs.com/weiyouqing/p/7544988.html
6.2基本クラス
- いつベースポインターを使用するのですか?
7ファイルシステム
7.1ファイル入力および出力ストリーム
ofstreamは、出力ストリームがデータをファイルに入力するか、ファイルのコンテンツをプログラムに読み込むかどうかです。
1.引用の判断方法は?2.いわゆるコンテナとは何ですか?特定のオブジェクトを運ぶために使用されるキャリアですか?3.ベクトルとは?コンテナとして理解できますか?またはポインター?コンテナーとリンクリストの違いは何ですか?4.このポインターの使用方法http://blog.chinaunix.net/uid-21411227-id-1826942.html 5.文字列クラスの概要https://www.cnblogs.com/X-Do-Better/p/8628492 .html 6.基本クラスポインターhttps://zhidao.baidu.com/question/335978078.html 7。