0

我有一些关于类、结构和联合的疑问。我知道类和结构被认为是对象。我想检查联合是否也被视为对象。因此,我可以在里面有一个构造函数?

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

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

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

???其次,如果我 typedef union 怎么办。ABC 是什么意思?我可以这样做吗

union ABC obj1();
A.x;


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

1 回答 1

1
  1. struct 和 class 的区别在于,struct 中的成员默认是公共的,但在类中是私有的;否则,它们在功能上是等效的。联合可以有成员函数(包括构造函数和析构函数),但不能有虚函数。联合不应有基类。联合不应用作基类。

  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;
    
于 2013-03-21T16:12:41.503 回答