C++结构继承

Act*_*rus 6 c++ inheritance struct

据我所知,C++中类和结构之间的主要区别(可能是唯一的)是默认情况下类的成员是私有的,结构默认是公共的.

但是,可能因为我以前是C-developer,我仍然继续声明结构只保存"public"字段,而且我几乎从不声明方法(构造函数除了初始化成员).

我还想利用结构的C++继承.

我的问题是:

  1. 即使语言允许,继承结构也是一种好习惯吗?
  2. 是否可以阻止struct声明一个虚方法,它将创建一个vtable并修改struct的大小?

谢谢

das*_*ndy 7

默认情况下,类的成员是私有的,结构体默认为public.

默认情况下,结构也继承public,其中类默认继承private.

Even if the language allows it, is it a good practice to inherits structs ?
Run Code Online (Sandbox Code Playgroud)

当然.它完全按照您的预期工作.

是否可以阻止struct声明一个虚方法,它将创建一个vtable并修改struct的大小?

还没.有一个C++ 20 +(P0707)的提议允许这个,但它仍然很年轻,并没有实现足够远,无法在任何地方使用.特别是,搜索"3.6 plain_struct"以查看它们如何强制执行普通结构.

一般来说,当你将它用作"struct"类函数时,我会建议使用一个struct - 保存没有不变量的数据.如果你有不变量,你应该使用封装和数据隐藏它们,所以它应该是一个类.

  • 你的最后一段显然是基于舆论和力量提出新用户是`struct`从`class`在C++中,这是情况并非如此不同. (3认同)