类的实例称为对象,但结构的实例是否有某个名称?
使用单独的术语“class”和“object”有助于区分类和类的实例,但我只听说过单个术语“struct”来指代struct或者结构的实例(取决于上下文)。
答案 0 :(得分:7)
结构,类,整数,联合,浮点等实例都是对象。
答案 1 :(得分:1)
struct
和class
之间的唯一区别是您声明一个类时的默认访问权限(无论您使用struct
还是class
,您声明的是一个类! )。这两个:
struct Foo : private Bar { private: int x; };
class Foo : Bar { int x; };
以及这两个:
struct Foo : Bar { int x; };
class Foo : public Bar { public: int x; };
是等价的。拥有一个对象无法告诉该对象,该类是否使用关键字struct
或class
声明。
来自类型特征is_class
的{{3}}:
请注意,使用struct关键字声明的类型是类,所以这个 “结构”的特征是正确的。
cppreference有这个枚举:
类型根据其属性分为不同的类别:
- 对象类型是一种(可能是cv限定的)类型,它不是函数类型,不是引用类型,也不是void类型(另请参见 的std :: is_object);
- 标量类型是[...]
- 琐碎的类型[...]
<强> TL; DR 强>
C ++没有结构和类,只有类。
或者......如果您对一些误导性的术语感到满意:结构和类的实例都是对象。