2013-03-21 108 views
0

我有一些疑慮,我想清楚有關類,結構和聯合。我知道類和結構被認爲是對象。我想檢查工會是否也考慮對象。因此,我可以在裏面有一個構造函數?構造函數,類,聯合,結構

union ABC 
{ 
    ABC() {}; 
    int x; 
}A, B, C 

因爲我有對象名稱。我可以做到這一點?

Union ABC obj1(); //Call constructor? 
A.x; //Variable accessing the member 

??? 其次, 如果我typedef聯盟。 A B C是什麼意思? 我能做到這一點

union ABC obj1(); 
A.x; 


typedef union ABC 
{ 
    ABC() {}; 
    int x; 
}A, B, C 

回答

1
  1. 一個結構和類之間的區別是,在默認情況下在結構 成員都是公開的,但在類私有的;否則,他們 功能相當。聯合可以有成員函數(包括構造函數和析構函數),但不包含虛函數。工會不得有基礎班。聯盟不得用作基礎類。

  2. Union ABC obj1(); //Call constructor?

    不,這並不調用構造函數

    union ABC obj1()意味着你 聲明函數名稱obj1和返回的union ABC

  3. 你必須在這兩種情況下的語法錯誤的對象,您必須執行以下操作:

    union ABC 
    { 
        ABC() {}; 
        int x; 
    }A, B, C; //You cannot miss this ; 
    
  4. 你可以這樣做:

    typedef union ABC ABCUnion; then 
    
    ABCUnion A, B,C; 
    

    這是一樣的

    union ABC A, B,C;