你能在不使用C++进行子类型划分的情况下创建继承吗

Can you create inheritance without subtyping using C++

本文关键字:划分 类型 情况下 创建 继承 C++      更新时间:2023-10-16

有人能给我一个没有子类型的继承的例子吗?还有一个使用C++没有继承的子类型的例子?

根据维基百科,子类型是为一种类型编写的程序部分也为其子类型工作时的关系:

子类型不应与(类或对象)的概念混淆对面向对象语言的继承;1分型是一种关系在类型之间(用面向对象的说法是接口)继承是源于允许从现有对象创建新对象的语言功能一个。

因此,以下是不带固有性的字幕的例子:

  • CCD_ 1创建了CCD_ 3的完美亚型CCD_
  • CCD_ 4创建CCD_ 6的子类型CCD_。我可以将mybool提供给任何期望int的函数。但是,我不能执行一些基本的运算符。因此,它不是一个完美的子类型,也不是最好的例子
  • struct test { unsigned mytmp : 4; };中,成员typedef int myint;0是int的一个完全亚型。我可以对mytmp的整数做任何事情,但它的值有限

有了这个定义,也很容易找到继承的例子,而不需要子类型

class Parent {};
class Child :  private Parent {}; 

CCD_ 13明显继承了CCD_ 14。但是,为管理Parent而编写的代码将无法与Child一起使用(不可能有子教程),因为它是私人继承的。

备注:在实践中,许多人倾向于将类型理解为类,将子类型理解为派生类。然而,C++标准确实在基本类型和被视为复合类型的类之间产生了差异。利斯科夫补贴原则的实施需要对这两个相似但不完全相同的原则进行更深入的思考