c++処理タイプ

2641 ワード

一、タイプ別名
タイプ別名:複雑なタイプ名を分かりやすい名前に置き換えます.例1を参照してください.特に、タイプ別名が複合タイプまたは定数を指す場合、うっかりすると問題が発生することに注意してください.例2を参照してください.
  1
typedef double wanges;  // double   wanges  
typedef wanges base, *p; // base  double   , p double *  
wanges a;  //    double a;
  2
typeof char *pastring;  // pastring char *   ,  pastring        
const pastring cstr = 0; //   const       , pastring   char      
//  cstr   char     ,           
const char * cstr = 0; //   const pastring cstr = 0     

二、auto
autoはc++11で導入され、autoはコンパイラに変数のタイプを自動的に判断させ、autoは1つの文で複数の変数を宣言することもできるが、1つの宣言文には1つの基本タイプしかないので、autoで複数の変数を宣言する基本タイプは一致しなければならない.autoはconstと参照変数を推定する際に変更を送信し,具体的な変更は例3を参照する.
 //1、 auto               
int i =0, &r = i;
auto a = r;  
//2、auto      ,     const,      const
int i = 100;
const int ci = i, &cr = ci; 
auto b = ci; // b   int (ci   const   )
auto c = cr; // c   int(          ,cr ci   , ci       const,    const   )
auto d = &i; //d   int *
auto e = &ci; //e   int const *,ci    ,&ci   int    ,        const,  const       
//3、           const   ,    ,  auto               
const auto f = ci ; // f   const int
//4、      auto     ,      const    
const &m = ci; // m   const int &(    )

授業後の練習問題の解析
const int i = 42;
auto j = i; // i     int
const auto &k = i; //   const int & ,    auto       int &
auto *p  = &i; //   const int *,    auto       const int *
const auto j2 = i, &k2 = i; //j2    const int , k2   const int &,  auto    int 

三、decltypeタイプインジケータ(c++11)
decltypeタイプ推定インジケータ:式から変数のタイプを判断する必要があり、式の値を計算したくない場合に使用します.例を見る
decltype(f()) sum = x; // sum       f      
//             ,      f  ,     sum    f        

autoとdecltypeの違い:(1)decltypeは最上位const(2)decltypeの結果が式形式と密接に関連していることを無視しません.例えば、カッコを付けないと大きな違いがあります.decltype((variable))の結果は永遠に参照であり、decltype(variable)の結果はvariableが参照である場合にのみ参照されます.
//(1)
const int ci =  0, &cj = ci;
decltype(ci) x = 0;  // x   const int
decltype(cj) y = x;  // y   const int &
//(2)
int i = 42, *p = &i; &r = i;
decltype(r+0) b ; //b   int,           int   
decltype(*p) c; //  :c int &     ,  *        ,*p    int &,         int &

レッスン後の練習
int a = 3, b = 4;
decltype(a) c = a;
decltype(a = b) d = a;
d = 1000;
cout << a << " " << b << " " << c << " " << d; // 1000 4 3 1000
//     ,d  int &,                ,          ,    i int,     i=x    int &