#define、constおよびsizeof


c++の勉强といっても、基本的な文法と対象に向かった考え方は少しは分かるので、c++を変えるのは难しくないと思って、c++の勉强を始めました.以前はjavaを習っていましたが、プログラミングの経験はあまり多くなく、あまり深く勉強していませんでした.実はプログラミングを始めたとき、みんなは一つの言語から始めて、この言語を深く勉強しました.しかし、実はもともとプログラミングは短期的な過程ではなく、最初からどの言語に精通している人は少なく、基本的には文法会、思想が少しあってからこの「プログラム猿」の道を始めた.私も大企業の筆記試験問題や剣指offerなどの本の問題の大部分がc/c++でc++を勉強し始めたのを見た.今回は、以前の時間を無駄にしていたとは思わないように、丁寧に細部を明らかにしてほしい.
一:#defineマクロ定義はみんな知っているはずですが、どうせ私は以下の注意事項があることを知らないのです.
1.
<span style="white-space:pre">	</span>#define PI 3.1415926

行末にセミコロンがないことに注意してください.
2.マクロ定義の変数規則は、大文字で命名されます.
3.後ろのマクロが前のマクロを使っている場合は、マクロの名前で表すとよい.
4.マクロ定義では、境界効果が発生しないように++などの演算子を使用しないようにします.
<span style="white-space:pre">	</span>#define SECOND_YEAR (60*60*24*365)
欠点:
1.#defineにはタイプがありません.彼の声明から変数タイプがないことがわかります.つまり、マクロを定義するときは、タイプがないので、勝手にタイプを指定することができます.しかし、使用する場所には必ずタイプがあるので、注意してください.
2.マクロ定義の置換はコンパイル中に発生します.つまり、複数を置換して複数のコピーを保存すると、constメモリよりも少し無駄になります.しかし、彼の置き換えが実際にコンパイルされている間、実行時に彼の値を変更することはできません.彼は直接数で変数名もないので、その値は可変ではありません.constの値はいくつかの方法で変更できます.(後述)二:const
constが変数を修飾する場合:
1.この変数は読み取りのみ
2.不要なメモリ割り当てを避けることができ、javaの定数プールと比較するとクラスがfinalに比べて理解できるようになります.実行中にconstタイプの変数はメモリに1つのコピーしかありません.
3.constの定数は曲線で国を救う方法で修正できます.
   
const int i = 0;
int *j = (int *)&i;
j = 1;
const修飾方法の場合:
まず、奇妙な声明方法を見てみましょう.
Class Test{
     public :
     int cout = 100;
      int  tt() cost{
           return cont;
      }
}

キャストが後ろにいるのは、特殊なものに特別な待遇があるからかもしれない.
ここで注意すべきはconstと宣言されたメソッドはconst以外のメソッドを呼び出すことはできません.