Act*_*rus 6 c++ inheritance struct
据我所知,C++中类和结构之间的主要区别(可能是唯一的)是默认情况下类的成员是私有的,结构默认是公共的.
但是,可能因为我以前是C-developer,我仍然继续声明结构只保存"public"字段,而且我几乎从不声明方法(构造函数除了初始化成员).
我还想利用结构的C++继承.
我的问题是:
谢谢
默认情况下,类的成员是私有的,结构体默认为public.
默认情况下,结构也继承public,其中类默认继承private.
Run Code Online (Sandbox Code Playgroud)Even if the language allows it, is it a good practice to inherits structs ?
当然.它完全按照您的预期工作.
是否可以阻止struct声明一个虚方法,它将创建一个vtable并修改struct的大小?
还没.有一个C++ 20 +(P0707)的提议允许这个,但它仍然很年轻,并没有实现足够远,无法在任何地方使用.特别是,搜索"3.6 plain_struct"以查看它们如何强制执行普通结构.
一般来说,当你将它用作"struct"类函数时,我会建议使用一个struct - 保存没有不变量的数据.如果你有不变量,你应该使用封装和数据隐藏它们,所以它应该是一个类.