オブジェクト内でこの静的メンバのためのC ++インライン関数

1、インライン

関数がインラインである場合には、コンパイル時に、コンパイラは、関数が呼び出される置かれ、それぞれの関数のコードをコピーします。しばらくしてループのインライン関数通常Dapperのない、インラインで指定することは、プログラムの実行速度を向上させることができます

#include <iostreamの> 
 
使用して名前空間STD; 

インラインINT MAX(INTの X、int型Y)を
{ 
   リターン(X> Y)?X:Y; 
} 

// メイン関数プログラム
INT メイン()
{ 

   COUT <<「マックス(20であります、10): "<<マックス(20,10)が<< ;てendl // Maxのここに呼ばれ、コンパイラは、コードの全体の機能をコピーします来た
   COUTマックス(0200)<<":「<<マックス( 0200)<< ENDL; 
   COUT << "MAX(100,1010):" <<マックス(100,1010)<< ENDL;
    戻り 0 ; 
}

2、このポインタ

書式#include <iostreamの> 使用して名前空間はstdを、クラスボックス
{ パブリック// 构造函数定义 
      ボックス(ダブル L = 2.0ダブル B = 2.0ダブル H = 2.0 
      { 
         COUT << " と呼ばれるコンストラクタ" << ENDL。
         長さ = L。 = B。
         高さ = H; 
      } 二重巻()
      {
 
 
 

   
      
         リターンの長さ*幅* 高さ。
      } 
      intは(ボックスボックス)を比較
      { 
         戻り 、この - >巻()> box.Volume();    // 重点是this->巻()能够得到类本身的乘积
      }
    私的ダブル長さ;     // ボックスの長さ
      のダブル幅;    // ボックスの幅
      のダブル高さ;     // ボックスの高さ
}; 
 
INTメイン(ボイド
{ 
   ボックスBOX1(3.31.21.5)。    // BOX1宣言 
   ボックスBox2の(8.56.02.0);    // BOX2を宣言し
 
   た場合(Box1.compare(Box2のが))
   { 
      COUTは << " Box2のがBOX1よりも小さい" << ENDL。
   } 
   
   { 
      COUT << Box2のがBOX1以上である << ENDL。
   } 
   戻り 0 
}

図3に示すように、クラスを指すポインタ

書式#include <iostreamの> 使用して名前空間はstdを、クラスボックス
{ パブリック// 构造函数定义 
      ボックス(ダブル L = 2.0ダブル B = 2.0ダブル H = 2.0 
      { 
         COUT << " と呼ばれるコンストラクタ" << ENDL。
         長さ = L。 = B。
         高さ = H; 
      } 二重巻()
      {
 
 


   
      
         リターンの長さ*幅* 高さ。
      } 
   プライベートダブル長さ;     // ボックスの長さ
      のダブル幅;    // ボックスの幅
      のダブル高さ;     // ボックスの高さ
}; 

INTメイン(ボイド
{ 
   ボックスBOX1(3.31.21.5)。    // BOX1宣言 
   ボックスBox2の(8.56.02.0);    // BOX2を宣言
   * PtrBoxボックス;                 // クラスへのポインタを宣言
   ダブル VAR = 2 ;
    ダブル * IP =&VAR ;
    //は、オブジェクトの最初のアドレス保存 
   ptrBox =&BOX1を、
   COUTが<< << BOX1 "は、通常クラスを呼び出します"。ボリューム()<<てendl; 
   // 今のメンバーにアクセスするためのメンバーアクセス演算子を使用しようと 
   COUT << BOX1のボリューム: << ptrBox->ボリューム()<< てendl; //これはクラスへのポインタである場合は、現在この呼び出しは、*(ptrBox).Volume()すべきである 、 しかし、あなたはまた、より簡潔な方法を使用することができます: - > 
   裁判所未満 << " 大慶ptrBox:" << ptrBox << てendl; 
   coutの <<アドレス値* IPのIP << << << てendl;
    // 第二の目的アドレス保存 
   ptrBox =&Box2の; 

   //は今のメンバーがアクセスするメンバーアクセス演算子を使用しよう 
   << COUT " Box2ののボリューム:" << ptrBox-を>ボリューム()<< ENDL; 
  
   戻り 0 ; 
}

 上記の例では、結果を返します。

呼ばれるコンストラクタ。
コンストラクタと呼ばれる。
通常、呼び出し元のクラス5.94
BOX1のボリューム:5.94
大慶ptrBox:0x7ffe09478430
アドレスvalue0x7ffe094784182の
Box2ののボリューム:102

4、静的クラスの静的メンバ

静的静的関数のロゴを理解することができます。

内部機能は、変数を定義したときこうして作成、その定義に進み、コンパイラは、スタック上のスペースを割り当て、その後、機能の実行の終了時にスタック上に割り当てられた空間的な機能が解放されます質問:あなたは次のコールに、この変数の関数値を保存したい場合は、どのように達成するために?最も簡単な考えられるグローバル変数を定義するが、グローバル変数は、多くの欠点を有しているとして定義され、最も明白な欠点は、この制御機能によってのみならず、この関数で定義され、この可変範囲(このような変数を破壊されます)。このような静的なローカル変数に属していることが必要であるが、それはグローバルにアクセスすることができます。

#include <iostreamの> 使用して名前空間STD; クラスボックス
{ パブリック静的int型 objectCount;     // 静的変数
       // コンストラクタは定義 
      ボックス(ダブル L = 2.0ダブル B = 2.0ダブル H = 2.0 
      { 
         COUT << コンストラクタ。呼び出され、「 << ENDL; 
         長さ = L;  = B; 
 
 
 

    = H;
          //は、一つのオブジェクトの作成増分 
         objectCount ++を; 
      } 
      ダブルボリューム()
      { 
         戻り長さ*幅の高さ; 
      } 
   プライベートダブル長さ;      // 
      ダブル幅;     // 
      ダブル高さ;      // 
}。
 
// の静的メンバの初期化クラスボックス
int型のボックス:: objectCount = 0 ;     // アクセスまたは唯一の静的プロパティを初期化することができ、静的クラスは、サービスのクラスであるため、インスタンスは、直接ラインで、(これをサポートしていない)ことができない静的メンバを変更一度
 
int型メイン(無効
{ 
   ボックスBOX1(3.31.21.5);     // BOX1宣言 
   ボックスBox2の(8.56.02.0);     // BOX2宣言
 
   // 出力目標総 
   COUT << " 合計オブジェクト:" <<ボックス:: objectCount << ENDL; 
 
   戻り 0 ; 
}

上記の例は、結果を返します。

コンストラクタ呼び出されますコンストラクタ呼び出されます合計オブジェクト2
  

メソッド静的クラスは、直接呼び出すことはありません、それは望んでインスタンス化し、ほとんどのPHPと同じです

 

おすすめ

転載: www.cnblogs.com/0-lingdu/p/11177498.html