3

私はいつも「変数を定義する」という概念と混同しています。定義とはどういう意味ですか?

例えば:

void main {
map<int,int> *infoMap;

if() {
//some check here,if it passes this check, then new infoMap
}

infoMap = new infoMap; 

}

そうですか

map<int,int> *infoMap;

また

map<int,int> *infoMap = new inforMap;

変数を定義しますか?

4

6 に答える 6

6

一番上は宣言、または必要に応じて定義です。ここで、コンパイラは変数にスペースを割り当てます。

一番下は割り当てです。ここで、コンパイラーは定義時に割り当てられたスペースを埋めます。変数の値を別の値に変更する場合は、複数の割り当てを設定できます。

于 2011-10-12T13:37:59.930 に答える
5

ランダムで不完全な図を次に示します。

class Foo;   // (incomplete forward) class declaration

class Foo {  //  class definition
  int a;           //  member declaration + definition
  int b(int, int); //  member function declaration
  static int c;    //  static member declaration
};

int Foo::b(int a, int b) { return a+b; }  // member function definition
int Foo::c;                               // static member defintion

int bar(int);   // free function declaration

int main() {    // free function declaration + definition
  int q;        // declaration + definition
  q = bar(0);
  return q;
}

int bar(int a) { return 2 * a; }  // free function definition

おそらく、「静的メンバー定義」は、他の場所で宣言されたオブジェクトの実際のオブジェクトインスタンス(つまり、割り当てと構築)を提供するという意味で一意です。これは、純粋な外部宣言にのみ匹敵します。

extern int N;  // declaration only, no definition

外部の可視性を備えた宣言+定義と混同しないでください。

extern const int M = 11;  // declaration and definition
于 2011-10-12T13:44:31.837 に答える
2
map<int,int> *infoMap;

infoMap宣言です。通常、宣言とともに初期化がある場合、それは変数の定義と呼ばれます。

于 2011-10-12T13:38:44.747 に答える
2

C ++で何かを定義することはmap<int, int>、識別子を型にバインドするだけでストレージを割り当てない宣言とは対照的に、識別子(この場合はへのポインタ)をストレージにバインドすることです。コンパイラが型の定義に関する情報を必要としない場合(つまり、型のみが必要な場合)、宣言だけで済ませることができます。それ以外の場合は、定義が必要です。

于 2011-10-12T13:41:36.760 に答える
1

変数を使用すると、defineとdeclareは同じ意味で使用される傾向があります。ただし、微妙な違いがあります。

ほとんどの場合、実際に変数を定義しています。

map<int,int> *infoMap;

「定義」という用語は、シンボルを宣言し、その実体、変数の格納スペース、構造/クラス本体、関数の実装を提供します。

場合によっては、externキーワードを使用して変数を「宣言」できます。これは基本的に、シンボル名とそのタイプの存在をコンパイラに通知しますが、そのためのスペースは割り当てません。スペースは、変数が実際に定義されている他の場所に割り当てられます。

// foo.c
extern int bar;

// bar.c
int bar;
于 2011-10-12T13:45:31.377 に答える
0

C ++で変数を宣言すると、その変数用にメモリにスペースが予約されますが、メモリは書き込まれません。この宣言は

map<int,int> *infoMap;

何でも含めることができます。変数を定義するときは、実際にそれをある値、この場合は新しいinfoMapに設定します。

于 2011-10-12T13:45:54.917 に答える