【问题标题】:Constructor, Class, union, struct构造函数、类、联合、结构
【发布时间】:2013-03-21 16:01:26
【问题描述】:

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

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

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

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

??? 第二, 如果我 typedef union 怎么办? A B C 是什么意思? 我可以这样做吗

union ABC obj1();
A.x;


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

【问题讨论】:

    标签: c++ class struct unions


    【解决方案1】:
    1. 结构体和类的区别在于默认情况下 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;
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 2018-06-02
      • 2017-01-21
      相关资源
      最近更新 更多