C++レビューの要点まとめ(1)

黄舟
黄舟オリジナル
2017-01-16 11:16:111174ブラウズ

C++ は C 言語を強化します - 型の強化

1. register キーワードの強化

register キーワードは、コンパイラに変数をレジスタに直接配置するように要求します。これは高速です。

C 言語では、レジスターによって変更された変数はアドレスを取得できませんが、C++ ではアドレスを取得できます。

2. 変数検出の強化

C 言語では、同じ名前の複数のグローバル変数を繰り返し定義することができます。C++ では、同じ名前の複数のグローバル変数を定義することはできません。

3. C++ のすべての変数と関数には型が必要です

C 言語では、

int f( ); は、戻り値が int で、任意のパラメーターを受け入れる関数を意味します

int f(void); は、戻り値を意味しますint

のパラメータなし関数 C++

int f( ); と int f(void) は同じ意味で、どちらも戻り値が int

4 のパラメータなし関数を表します
例: a< ; b ? a : b )= 30;

違い: C言語は変数の値を返しますが、C++言語は変数そのものを返します

C言語の三項演算子は変数の値を返します。 C++ の三項演算子を使用して変数自体を直接返すため、プログラム内のどこにでも出現できます

注: 三項演算子が返す可能性のある値の 1 つが定数値である場合、それを左辺値として使用することはできません(a < b ? 1 :b ) = 30; を使用すると

C 言語は C++ と同様の機能をどのようにサポートしますか?

====> 左辺値であるための条件: メモリ空間がなければなりません; C++ コンパイラは、プログラマがアドレスを取得するのに役立つだけです

1.const 修飾子の理解

関数: オブジェクトを定数に変換します、読み取り専用。


int main()
{
const int a;// 1 第1个第2个意思一样 代表一个常整形数
int const b;// 2
const int *c; // 3 第3个 c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改)
int * const d; //4 第4个 d 常指针(指针变量不能被修改,但是它所指向内存空间可以被修改)
const int * const e ; //5 第5个 e一个指向常整形的常指针(指针和它所指向的内存空间,均不能被修改)
return 0;
}

例:
const int bufSize=512;bufSize初始化之后就无法进行修改了。
1)在C++中,const符号表原理:存储方式是符号表即key value
key value
bufSize 512

2. C++ コンパイラーが const 定数を処理する方法: 定数が宣言されると、その定数はシンボル テーブルに配置され、定数はその定数の値に直接置き換えられます。シンボルテーブル。

結論: C言語のconst変数とC++の違い


C言語のconst変数は読み取り専用変数であり、独自の記憶領域を持っています

C++のconst定数は記憶領域を割り当てる場合と割り当てない場合があります

いつconst 定数はグローバルであり、他のファイルで使用する必要があります

& 演算子を使用して const 定数のアドレスを取得する場合

2) const と #define の類似点と相違点は同じです

: どちらも可能です定数として使用できます

異なる: const 定数はコンパイラによって処理され、型検出とスコープ チェックが提供され、マクロ定義はプリプロセッサによって処理され、単純なテキスト置換が実行されます。


上記は C++ の復習ポイント (1) のまとめです。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。