c++ - 构造函数、类、 union 、结构

标签 c++ class struct unions

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

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

最佳答案

  1. 结构体和类的区别在于默认情况下 struct 中的成员是公共(public)的,但在类中是私有(private)的;否则,他们 是功能等效的。 union 可以有成员函数(包括构造函数和析构函数),但不能有虚函数。 union 不应有基类。 union 不应用作基类。

  2. union ABC obj1();//调用构造函数?

    不,这不会调用构造函数

    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;
    

关于c++ - 构造函数、类、 union 、结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15552435/

相关文章:

c++ - 指针与指向 const 的指针的部分排序

java - 从另一个类调用一个类而无需更改类类型(或返回)Java

c - 如何使用指向结构的指针输出?

c++ - 如何访问结构和枚举成员形成一个类?

c++ - 找不到 C++ 代码中的错误

c++ - Kruskal算法和不相交集数据结构: Do I need the following two lines of code?

java - URLImageSource 在 Java 10 中失败,但在 Java 8 中失败

c++ - 创建用于创建和打印 vector 的 C++ 类对象

c - 在 realloc 中使用结构值会导致段错误

c++ - 类和函数之间的模板缺乏正交性