2017-06-05 12 views
-5
Class Sample 
{ 
    int a,b; 
public : 
    Sample(int p,int q) 
    { 
    a=p; 
    b=q; 
    } 
    int sum() 
    { 
    return (a+b); 
    } 
}; 
int main() 
{ 
    Sample sm(10,20); 
    std::cout<< "Sum :"<< sm.sum()<<endl; 
} 

私はC++の初心者ですので、あなたの答えの言語をわかりやすくするようにしてください。 ありがとうございました:)メモリがクラスに割り当てられている場合

+1

ここには良いリソースがあります:http://en.cppreference.com/w/cpp/language/lifetime – NathanOliver

+0

'class'はオブジェクトの_タイプ_です。ほとんどの場合、コンパイル時にのみ存在するカテゴリのようなもので、実行時にはストレージを必要としません。そのクラスのオブジェクト_Instances_はオブジェクトを格納する必要があり、それは上にリンクされたcppreferenceページのように機能します。 (クラスの関数のコードやその他のものは、実行時にメモリに保存されますが、再コンパイルしない限り変更されません)。 – Useless

+0

サンプルに動的メモリ割り当てはありません。 – crashmstr

答えて

1

クラスに割り当てられるメモリは、静的メンバー変数のみです。あなたの例には、静的メンバー変数は含まれていません。

メモリはオブジェクトのために割り当てられます。あなたはラインで、そのようなオブジェクトを作成します。それはスコープの外に出るとき

Sample sm; 

このメモリは、変数が宣言されたブロックの最後に消えます。

+0

私は理解しているのは、クラスオブジェクトではなくメモリであるためです。メモリは、静的メンバーがある場合にのみクラスに割り当てられます。 –

+0

* "このメモリは変数が宣言されているブロックの最後にあります" * - 必ずしもそうではありません。関数の戻り値をreference-to-constにバインドして、スコープ外の有効期間を延ばすことができます。とにかく、貧しい質問はおそらく答えるべきではありません。 – IInspectable

+0

この場合、次のような行にクラス定義のインスタンスが作成されるまで、メモリは使用されません。Sample sm(10,20); –

関連する問題