C++@コロン(:)とダブルコロン(:)の使い方

4859 ワード

回転:http://blog.csdn.net/zimingjushi/article/details/6549390
1.コロン(:)用法(1)は、機構内のビット領域の定義(すなわち、この変数がいくつかのビット空間を占める)typedef struct(uXXX{unsigned char a:4;unsigned char c];XXX(2)コンストラクタの後のコロンが役割を果たし、クラスがメンバー変数に値を割り当てる方法で、リストを初期化し、メンバー変数の定数const型にもっと適しています.structXXX{u XXX():y(0 xc 0){}(3)public:とprvate:後のコロンは、後に定義されるすべてのメンバーが公有または私有であることを示し、次の「public:」または「prvate:」が現れるまで.「prvate:」はデフォルト処理です.(4)類名のコロンの後は、クラスの継承を定義するために用いられます.クラass派生クラス名:継承方式ベース名{派生クラスのメンバー}継承方式:public、prvateとprotected、デフォルト処理はpublicです.2.ダブルコロン(:)の使い方(1)は「ドメインオペレータ」の例を表します.AクラスAはメンバー関数void f()を宣言しましたが、クラスの声明にfの定義を与えていません.クラス外でfを定義する場合は、void A:f()と書きます.このf()関数はクラスAのメンバー関数です.(2)グローバル関数の前に直接使用し、グローバル関数であることを表します. 例:VCでは、API関数の呼び出しに、API関数の名前の前に追加することができます:(3)はメンバー関数と変数を参照することを表しています.作用ドメインのメンバー演算子例:System:Math:System.Math()はSystem.Sqrt()————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————「スコープ分解演算子」というカテゴリAを宣言しました.クラスAはメンバー関数voidf()を宣言しましたが、クラスの声明にfの定義を与えていません.クラス外でfを定義する場合は、voidA:f()と書きます.このf()を表します.関数はクラスAのメンバー関数です.一般的には大域関数の前に直接使用するものがあります.大域関数です.クラスのメンバー関数とクラス外の大域関数が同じ名前です.クラス内で定義されると、この関数名を使ってデフォルトで呼び出されるのは自分のメンバー関数です.同じ名前の大域関数を呼び出す場合は、必ず入力します.で区別されます.たとえば、VCでは、API関数を呼び出したときに、API関数名の前に追加できます.
 
***************************************************************
この文章はC/C++の中のコロンの使い方をまとめます.1、ビットドメイン定義これは前の構造体についての文章で十分話しました.もう繰り返しません.2、コンストラクションの初期化リストは、まず何をコンストラクタと言いますか?コンストラクタとは、クラスの名前が付いている関数です.普通の関数との違いは、タイプを返していないことです.コンストラクタの後ろにコロンプラス初期化リストが付いています.各初期化変数の間にコンマ(、)で区切られています.以下の例を挙げます.class myClass{public();myClass();/コンス)は返さないタイプです.パラメータリストがあります.ここでは省略します.();/コンストラクタint a;const int b;myClass:a(1)、b(1)/初期化リスト{}上の例はコロンという使い方を示していますが、この使い方についていくつか説明します.1)初期化リストの役割は、構造関数内で対応するメンバー変数の割り当てに相当しますが、両者には違いがあります.初期化リストでは変数を初期化し、構造関数内では値付け操作を行います.両方の違いは、例えばconstタイプデータの動作に特に顕著に表れています.constタイプの変数は定義時に行われなければならないことを知っています.初期化は、const型の変数に値を割り当てることができませんので、constタイプのメンバー変数は、初期化リストの中でしか初期化できません.つまり、次のコードはエラーになります.myClass::()myClass(){a=1;/間違いなく、初期化リストで初期化されたb=1に相当します./エラーで、const変数は値付けができません.2)初期化の手順はメンバー変数名の順番と同じです.まず次の手順を見てください.myClass::myClass():b(1),a(b){}このような実行結果a、bはそれぞれいくらですか?b=1、a=1ではなく、b=1でaは乱数です.この点はかなり重要です.初期化リストで初期化する場合は、初期化の順序は声明の順序と一致して、不必要なエラーが発生しないようにします.の手順は、まず基質を初期化してから、その種類の自分の変数の声明順に基づいて初期化します.3、宣言基質.仮に私達はもう一つのクラスを定義し、myClass類から継承します.定義方式は以下の通りです.class deviedClass:public myclass{/略去)ここでのコロンは名声ベースの役割を果たしています.ベースクラス名の前にpublic/prvate/protectedなどのラベルを入れて、継承のタイプを識別してもいいし、省略してもいいです.classで定義されているクラスはデフォルトでprvateです.structで定義されているクラスはpublicです.具体的なラベルは何の違いがありますか?ここでは言いません.初期化リストと同じです.ここでは複数の基質の名声を得ることもできます.各基質の間にコンマ(、)で区切られます.4、条件語句(?:)と?条件文としての役割はif elseに相当します.int a、b、c;a=3;b=2;c=a>b?a:b;a>bが成立すれば、cにbを付与する構造は条件式?表式1:表式2条件式がtrueである場合、表式の値は式1の値となりますが、それ以外の値は何点になりますか?紹介するのは難しいですが、下記の表現は何の意味が分かりますか?int max=i>j?k?i:k?k;k;頭が大きいでしょう.へへ.2)?:優先度が低いです.これは注意してください.下のプログラムの実行結果は何ですか?int=3;int=2;cout<i>j?i:j;i;i;j;;;j;;;;;;;;;;;;j;;;;;;;;;;;;;;;;よりも優先度が高いです.?i:jは、cout<j)?i:j;/出力1または0は、(cout<(i>j)の値として決定されます.(cout<(i>j)の条件として、coutが正しく実行されると1(true)となり、そうでないと0(false)となり、これにより式値iまたはjcout<(i>j?i:j)を決定します.;//i>jはiを出力し、そうでないとjを出力し、表現値はtrueである.coutが正しく実行されている場合、falseの優先度に関する問題がもっと多い場合は言わない.5、文ラベルは常にgotoと協力して使用される.ステップ1:a=f 1();goto step 1;このようなやり方もあまり推奨されていません.文の順番を壊して実行されたための価格は分かりますよね.でも、存在は合理的です.まだ存在していますから、その用途にはその利点があります.例えば、マルチ層ネストの脱退(break contionueより直感的に見てください)コードなどの重複を避けることもできます.6、スイッチ文のcase後.これは言わないで、できないなら、私も言っていません.
7、アセンブリコマンドテンプレートはこれも分かりません.釈迦にしました.参考にしてください.http://developer.e800.com.cn/articles/2006/43/1144846933898_1.html他日勉強します.
 
***************************************************************
 
1、 スコープ記号:前は一般的にクラス名で、後は一般的にこのクラスのメンバー名です.C++は例として同じ名前のメンバーを避けるために、スコープを採用します.A、Bは2つのクラスを表しています.A、Bにはメンバーメンバーメンバーがいます.A:memberはクラスAのメンバーmember Bを表しています. 2、グローバルスコープ記号:グローバル変数が局所関数の中にある変数の名前と重なる場合、次のように区別されます. char zhou;//グローバル変数 void sleep() { char zhou;//ローカル変数 char(局所変数)=char(局所変数)*char(局所変数); :char(グローバル変数)=:char(グローバル変数)*char(ローカル変数); } 3、 ::は、C++の「作用域分解演算子」です.例えば、クラスAにはメンバー関数voidf()が宣言されていますが、クラスの声明でfの定義が与えられていません.クラス外でfを定義する場合は、voidA:f()と書きます.このf()関数はクラスAのメンバー関数です.
01  class CA {    
02  public:    
03    int ca_var;    
04    int add(int a, int b);    
05    int add(int a);    
06  };   
07      
08  //          ,      :    
09  int CA::add(int a, int b)    
10  {    
11    return a + b;    
12  }    
13      
14  //  ,                            ,  :    
15  int CA::add(int a)    
16  {    
17    return a + ::ca_var;    
18  }   
19      
20  //           ca_var。