C ++ - 型変換、およびオブジェクトクラス、クラス定義のインスタンス(3日目)

まず、型変換

図1に示すように、暗黙的型変換

チャー C = ' A ' 

int型 I = cを、

ここで、暗黙的な変換このコードのセクションでは、チャーがそれ以上、intに暗黙の型変換を発生する、送信パラメータ、戻り値、等も可能です。

図2に示すように、明示的な型変換

(1)キャスト

文字 Cは= ' A ' ; 

int型私は=(int型)C; // C言語スタイルの
int型 = I INT(C); // C ++スタイル

(2)C ++互換キャストC、同時に型変換の4種類の形でオペレータを増加させながら

4型変換演算子のC ++形:

  (1)静的型変換

    特定の型の変数= static_castを<ターゲット・タイプ>(ソース型変数)

    使用可能:void *型は、指標の他のタイプに変換することができます。

int型A;
 無効 * PV =&A; // C ++コンパイラOK、CコンパイラOKの

int型 * P = PV; // C ++コンパイラのエラー、CコンパイラOK //などの溶液

にint * PA =(int型*) PV;
int型* PA = static_castを<整数*>(PV); //ダブルクリッ> intは完了することができません

  (2)動的キャスト

    特定の型の変数= dynamic_castを<オブジェクトタイプ>(ソース型変数):

  (3)多くの場合、キャスト

    特定の型の変数はconst_cast = <オブジェクトタイプ>(ソース型変数)

    使用シナリオ:一定の基準や指針の属性を削除します

constの揮発性のint A = 10 ;定数が複数の読み取りを避けるために、レジスタにロードされているので//が揮発性でない場合、失敗する次の時間の値を変更するには、その役割は、コンパイラの最適化を防ぐためである

のconstを int型 *&PAは= ;

 * PA = 20である ; //は、値が一定で、コンパイルされない

のint *はconst_cast PA2 = < int型 *>(&A); // OK
 
* PA2 = 20であり、定数を除去する//プロパティ

 

注意:

  C ++コンパイラはデータ型を認識しない場合は、することができ、その後だけ認識タイプに変換し、ブールタイプと見なされる可能です。

 

  (4)再説明型変換

    特定の型の変数= reinterpret_castは<オブジェクトタイプ>(ソース型変数)

    アプリケーションシナリオ:ポインタまたは参照変換の任意のタイプ、ポインターと整数などの間で変換

ポインタの整数がに変換されます。

// *(INT *)= 123 0xE0200080; C ++で次のステートメント完了するために使用されてもよい
INT ADDR 0xE0200080を

INTは * PADDR reinterpret_castは= < INT *> (ADDR);

 * PADDR = 123

ポインタ変換の任意のタイプ:

構造体のデータ{

  char型[5]。

  チャーACC [9]。

  チャーのpasswd [7]。

}。

char型のテキスト[] = "0001 \ 00012345678 000888888 \"

データ* PDATA = reinterpret_castは<データ*>(テキスト); //今PDATAを動作させるために使用することができます。

 

第二に、要約

1、マクロを使用するように注意してください

  あなたはCONST、列挙型、インライングローバルマクロ見えるので、置き換えを使用することができます。以下のような:

#defineし PAI 3.14; ---> constのダブルPAI = 3.14; #define ERROR 0; #define SUCCEDD 1; ----> NUM状態{ERROR、SUCCESS;} #define MAX(a、b)は(?(A)>(B)(A):( B))--->インラインINT maxは(int型B、INT){:B?> B Aを返します;}









 

初期化中2、変数は、ステートメントで使用します

3、新しいの使用を交換して削除しよう、mallocとfree

4、以下のvoid *、ポインタ演算、連邦は少なく、あまりキャストを使用します

5、表す文字列に文字列を使用

 

 



おすすめ

転載: www.cnblogs.com/ptfe/p/11235419.html