我想澄清一些关于类、结构和 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
最佳答案
结构体和类的区别在于默认情况下 struct 中的成员是公共(public)的,但在类中是私有(private)的;否则,他们 是功能等效的。 union 可以有成员函数(包括构造函数和析构函数),但不能有虚函数。 union 不应有基类。 union 不应用作基类。
union ABC obj1();//调用构造函数?
不,这不会调用构造函数
union ABC obj1()
意味着你 声明一个名为obj1
的函数并返回一个union ABC
的对象
两种情况下都存在语法错误,您必须执行以下操作:
union ABC { ABC() {}; int x; }A, B, C; //You cannot miss this ;
你可以这样做:
typedef union ABC ABCUnion; then ABCUnion A, B,C;
同理
union ABC A, B,C;
关于c++ - 构造函数、类、 union 、结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15552435/