2013-03-21 188 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;