struct Frame {
int frame_num;
BoundingBox bbox;
};
在上述结构中,BoundingBox
是一个类,以后以以下方式使用。将类实例作为结构的成员有什么好处?
答案 0 :(得分:3)
在C ++中是否可以将类的实例作为结构的成员?
您已在代码段中回答了自己的问题。是的,可能。
将类实例作为结构的成员有什么好处?
int frame_num
中Frame
有什么好处?使用自定义类型与您获得的好处相同。
类是一种使自定义类型(在您的示例中为BoundingBox
)的方法,该自定义类型除语言所提供的内置类型(int
,float
等)之外还可以使用盒子。两者都可以放在另一个自定义类型中(例如Frame
),它们提供了一种与数据进行交互的方式。例如。 int
是一种类型,它允许程序员以指定的方式处理整数数据,即int
指示其类型的值如何与float
进行交互。同样,自定义类型将允许该类型的用户以某种方式处理某些数据。
除:类和结构在C ++中几乎相同。
答案 1 :(得分:1)
很好。继续使用它。
两个抽象-Frame
和BoundingBox
-达到自己的目的。一个是class
,另一个是struct
并不会改变这一点。
答案 2 :(得分:1)
本质上,结构与类几乎相同。
但是,默认情况下,结构的成员声明为public
,而类的成员则声明为private
。
答案 3 :(得分:0)
为什么不呢?结构是一类,因此它们没有什么特别的。 它称为“对象关联”,它取决于设计。通常,对象关联称为“ Has-A”关系。
答案 4 :(得分:0)
在C ++中,Class和Struct是相同的东西,对于 class ,默认访问修饰符为 private ,对于,则为 public strong>结构
此外,如果不需要语法说明,则可以嵌套这些结构,以便获得正确的OOP设计。
也就是说,我要注意的是,在语义上是有区别的:
因为结构主要用于描述数据,
而类主要描述对象。
某些程序员可能(允许自己)在结构上使用memset
,或将其复制到另一个内存位置。
这些操作可能会破坏struct之类的类,方法是:
-破坏了所包含的类成员的vptr
-如果此结构本身具有虚拟方法,则它是自己的vptr
。
-复制指针并创建一些令人惊讶的结果。
底线:
在类中嵌套类,在类中嵌套结构...
但是避免在struct中嵌套类,没有充分的理由。
此外,您可能希望接受“结构->数据,类->对象”的约定