C ++の研究ノート:のconst int型*&との間に&のconst int型*のconstの違いについて - 新しい「CONST」役割またはポインタを参照しますか?

次のように既存の手順は以下のとおりです。

1  INT(比較のconst  int型&NUM1、CONSTの INT *&NUM2)
 2  {
 3      リターン(NUM1> * NUM2を)?NUM1:* NUM2。
4  }
 5  
6  INT メイン()
 7  {
 8      のint I = 9 9      int型温度= 7 10      INT * p =&温度;
図11は、     (I、p)を比較します。
12      リターン 0 ;
13 }

コンパイルエラーでライン11をリードします:値「のconst int型*&」私たちは「p」は違法である引数を提供することを意味タイプ使用の「int型*」値のタイプを、初期化することはありません。

、私たちのパラメータの要件を私たちは、ポインタと参照のタイプがタイプと一致している必要があります知っていて、それが参照されるオブジェクトを指すが、これは一定のポインティングポインタがconstオブジェクトを指すことができているには1つの例外があり、かつ一定の参照は、任意の式を初期化することができますそれは共通の基準であるので、参照の型は、私たちの頭の機能がより多くの場所で使用することができようにするために、オブジェクトの種類への参照と一致していなければならないので、私たちは「const参照」として宣言し、「共通の参照」、関数宣言を変更することを決めました次の形式:

/ * 
 *機能ヘッダー変更前:(のconst int型&NUM1、のconst int型*&NUM2)を比較int型
 *機能ヘッダー変更後:比較(のconst int型&NUM1、のconst int型*のconst&num2の)int型
 * / 

int型の比較(のconst  int型&NUM1、CONSTの INT * CONSTNUM2)
{ 
    リターン(NUM1> * NUM2)NUM1 :? * NUM2; 
} 

int型のmain()
{ 
    int型 I = 9 ;
     int型の TEMP = 7 ;
     INT * P =&TEMP; 
    比較(I、P) ; 
    戻り 0 ; 
}

プログラムは、私たちが実行した後に望ましい結果を得ることができ、コンパイルする必要があります。このとき、変数「NUM2」type「は一定の基準に一定のポインタ」です。

 

要約すると、新しい「CONSTは、」基準に作用している学ぶことができます。

おすすめ

転載: www.cnblogs.com/u-n-owen/p/11540129.html