C++_代码重用4-多重继承】的更多相关文章

C++的主要目的是促进代码重用. 公有继承是实现这一目标的机制之一: 本身是另一个类的成员,这种方法称为包含.组合.层次化. 另一种方法是使用私有.保护继承. 通常包含.私有继承和保护继承用于实现has-a关系,即新的类型包含另一个类的对象. 多重继承使得能够使用两个或更多的基类派生出新的类,将基类的功能组合在一起. 还有类模板——另一种重用代码的方法.类模板能够使用通用术语定义类,然后使用模板来创建针对特定类型定义的特殊类.例如,可以定义一个通用的栈模板,然后使用该模板创建一个用于表示int值…
如果两种类只是数据类型不同,而其他代码是相同的,与其编写新的类声明,不如编写一种泛型(独立于类型的)栈.然后将具体的类型作为参数传递给这个类.这样就可以使用通用的代码生成存储不同类型值的栈. 可以使用typedef处理这样的需求,但是有两个问题,一.每次修改类型都必须重新编辑头文件:二.在每个程序中都只能使用这种技术生成一种栈. C++的类模板为生成通用的类声明提供了一种更好的方法:模板提供参数化类型,能够将类型名作为参数传递给接收方来建立类或函数. C++标准模板库(STL)提供了几种功能强大…
继承使用时要注意,默认是私有派生.所以要公有派生时必须记得加关键字Public. MI(Multi Inheritance)会带来哪些问题?以及如何解决它们? 两个主要问题: 从两个不同的基类继承同名方法: 从两个或更多相关基类那里继承同一个类的多个实例: 虚方法 Worker公有派生出Singer和Waiter: 然后Singer和Waiter公有派生出SingingWaiter(即多重继承): 这样会导致一个问题,就是SingingWaiter中有两个Worker组件.通常可以将派生类对象的…
使用包含:易于理解,类声明中包含表示被包含类的显式命名对象,代码可以通过名称引用这些对象: 使用继承:将使关系更抽象,且继承会引起很多问题,尤其是从多个基类继承时. 私有继承所提供的特性确实比包含多. 通常,应使用包含来建立has-a关系:如果新类需要访问原有类的保护成员,或需要重新定义虚函数,则应使用私有继承. 保护继承 保护继承:基类的公有成员和保护成员都将成为派生类的保护成员. 私有继承与保护继承的区别,在第三代继承中就体现出来了.使用私有继承时,第三代类不能使用基类的接口:使用保护继承时…
对于姓名可以使用字符数组来表示,但这将限制姓名的长度.当然,还可以使用char指针和动态内存分配,但这要求提供大量的支持代码.有一个好的方法就是使用一个他人开发好的类的对象来表示.如果C++库提供了合适的类,实现起来将更简单.C++库确实提供了一个这样的类,它就是valarray. valarray类简介 模板类在使用时需要指定具体数据类型. valarray<int>  q_values; //an array of int valarray<double> weights; /…
Javascript中的Trait与代码重用 来源 http://www.ituring.com.cn/article/64103 我们知道,OOP中最普遍的代码重用方式是通过继承,但是,继承有一些缺点,其中最为主要的是继承是一种isa关系,父子类之间的关系太过紧密,而对于像JAVA这门语言而言,只能支持单继承,使得很多时候不能不进行代码拷贝这样的事情. 举个例子,假设我们要建模动物.最底层是一个Animal对象,下面有猫科,犬科.然后猫科下有猫,老虎.犬科下有狗和狼. 猫能够miao,狗能够叫…
第14章 C++中的代码重用 1.C++代码重用方法:公有继承.使用本身是另一个类的对象的类成员(这种方法称为包含.组合或层次化).私有或保护继承.类模板等. 2.模板特性意味着声明对象时,必须指定具体的数据类型. 3.用于建立has-a关系的C++技术是组合(包含),即创建一个包含其他类对象的类. 4.接口和实现:使用公有继承时,类可以继承接口,可能还有实现(基类的纯虚函数提供接口,但不提供实现).获得接口是is-a关系的组成部分.而使用组合,类可以获得实现,但不能获得接口.不继承接口是has…
第14章 C++中的代码重用 1. 使用公有继承时,类可以继承接口,可能还有实现(基类的纯虚函数提供接口,但不提供实现).获得接口是is-a关系的组成部分.而使用组合,类可以获得实现,但不能获得接口.不继承接口是has-a关系的组成部分. 2. C++还有另一种实现has-a关系的途径--私有继承.使用私有继承,基类的公有成员和保护成员都将称为派生类的私有成员.这意味着基类方法将不会称为派生类对象公有接口的一部分,但可以在派生类的成员函数中使用它们. 3. 包含将对象作为一个命名的成员对象添加到…
除了在源代码层面实现共享("前.NET Core时代"如何实现跨平台代码重用 --源文件重用)之外,我们还可以跨平台共享同一个程序集,这种独立于具体平台的"中性"程序集通过创建一种名为"可移植类库(PCL: Portable Class Library)"项目来实现.为了让读者朋友们对PCL的实现机制具有充分的认识,我们先来讨论一个被我称为"程序集动态绑定"的话题. 目录一.何谓程序集动态绑定?二.程序集一致性三.程序集重定向…
代码重用与函数编写 1.使用require()和include()函数 这两个函数的作用是将一个文件爱你载入到PHP脚本中,这样就可以直接调用这个文件中的方法.require()和include()几乎是一样的,唯一的区别就是函数失败后前者给出一个致命错误,后者给出一个警告变体:require_once()和include_once()确保一个包含的文件只能被引入一次,多用这个 2.在PHP中使用函数 2.1调用函数 如果一个函数已经被定义了,且该函数在这个脚本里面,则可以直接调用,类似调用函数…