我有一些疑问,我想澄清类,结构和联合。我知道类和结构被认为是对象。我想检查联盟是否也被认为是对象。那么,我可以在里面有一个构造函数吗?
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
答案 0 :(得分:1)
结构和类之间的区别在于默认情况 struct中的成员是公共的,但在课堂上是私有的;否则,他们 功能相同。联合可以具有成员函数(包括构造函数和析构函数),但不具有虚函数。工会不得有基类。联合不得用作基类。
Union ABC obj1(); //Call constructor?
不,这不会调用构造函数
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;