簡體   English   中英

結構和類的嵌套

[英]Nesting of Structs and Classes

#include<iostream>
using namespace std; 
struct My_Class{
class My_struct{
int am_i_in_class_or_struct;
};
};

int main(){
cout<<sizeof(My_Class)<<endl;
cout<<sizeof(My_struct)<<endl;
cout<<sizeof(int);
}

請解釋:當我在Turbo C上執行上述程序時,我得到了輸出:1 2 2現在不應該在每種情況下大小相同,或者至少My_Class應該具有與My_struct相同或更大的大小! 如果程序中有錯誤,請盡可能修復它們,否則請忽略它並專注於手頭的問題! 我不相信Turbo C ......但是目前我的VS 2008因為我的Ram變壞而不斷崩潰!

My_Class不包含My_struct ,它只是定義它。 如果您想從My_Class外部創建一個My_struct實例,它將被稱為My_Class::My_struct

為了在My_Class實際包含My_struct實例,您應該這樣做

struct My_Class{
  class My_struct{
    int am_i_in_class_or_struct;
  };
  My_struct myStructInstance;
};

您正在嵌套聲明,但不嵌套數據。 在另一個類中聲明一個類並不會神奇地使內部類的數據成員也成為外部類的成員。 您的代碼幾乎等同於一個單純的代碼

struct My_Class{
};

class My_struct{
  int am_i_in_class_or_struct;
};

只有一個區別。 在您的代碼中,結構的名稱是My_Class::My_struct 在我的版本中它只是My_struct 只有名字改變了。 沒有其他的。 (實際上,在訪問權限方面存在一些其他差異,但它與所述問題並不直接相關。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM