构造函数,类,联合,结构

时间:2013-03-21 16:01:26

标签: c++ class struct unions

我有一些疑问,我想澄清类,结构和联合。我知道类和结构被认为是对象。我想检查联盟是否也被认为是对象。那么,我可以在里面有一个构造函数吗?

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

因为我有对象名称。我能做到吗?

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

??? 其次, 如果我打字联合会怎么样? A B C是什么意思? 我可以这样做吗

union ABC obj1();
A.x;


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

1 个答案:

答案 0 :(得分:1)

  1. 结构和类之间的区别在于默认情况 struct中的成员是公共的,但在课堂上是私有的;否则,他们 功能相同。联合可以具有成员函数(包括构造函数和析构函数),但不具有虚函数。工会不得有基类。联合不得用作基类。

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

    不,这不会调用构造函数

    union ABC obj1()意味着你 声明名为obj1的函数,并返回union ABC

  3. 的对象
  4. 在这两种情况下都有语法错误,您必须执行以下操作:

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

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

    相同
    union ABC A, B,C;