类继承通过使用已有的类(基类)定义新的来(派生类),使得能够根据需要修改编程代码.共有继承建立is-a关系,这意味着派生类对象也应该是某种基类对象.作为is-a模型的一部分,派生类继承基类的数据称源和大部分方法,但不继承基类的构造函数.析构函数和赋值运算符.派生类可以直接访问基类的公有成员和保护成员,并能够通过基类的共有方法和保护方法访问基类的私有成员.可以在派生类中新增数据成员和方法,还可以将派生类用作基类,来做进一步的开发.每个派生类都必须有自己的构造函数.程序创建派生类对象时,将首先调用基…
第13章 类继承 1. 如果购买厂商的C库,除非厂商提供库函数的源代码,否则您将无法根据自己的需求,对函数进行扩展或修改.但如果是类库,只要其提供了类方法的头文件和编译后的代码,仍可以使用库中的类派生出新的类.而且可以在不公开实现的情况下将自己的类分发给其他人,同时允许他们在类中添加新特性. 2. 派生类构造函数首先创建基类对象,如果不调用基类构造函数,程序将使用默认的基类构造函数. 3. 创建派生类对象时,程序首先调用基类构造函数,然后再调用派生类构造函数.派生类对象过期时,程序将首先调用派生…
本节内容源于对C++ primer第13章的学习,这本书把C++的原理将得明明白白.网上的博客往往讲得一头雾水.到头来还不如看原书本. 问题 首先给出一题: #include<stdio.h> class A{ public: ~A(); }; A::~A(){ printf("deleteA"); } class B:public A{public: ~B(); B::~B(){ printf("deleteB"); } int main() { A…
第13章 集合 本章内容: * 集合接口 * 具体的集合 * 集合框架 * 算法 * 遗留的集合 13.1 集合接口 Enumeration接口提供了一种用于访问任意容器中各个元素的抽象机制. 13.1.1 将集合的接口与实现分离 Java集合类库将接口(interface)与实现(implementation)分离. 队列接口指出可以在队列的尾部添加元素,在队列的头部删除元素,并且可以查找队列中元素的个数.当需要收集对象,并按照“先进先出”的规则检索对象时就应该使用队列. 队列通常有两种实现方…
7.1.7.2.7.3 #include<iostream> #include<cstdio> #include<vector> #include<string> using namespace std; struct Sales_data { string bookNo;//isbn编号 unsigned units_sold=;//该书的销量 double revenue=0.0;//该书的总销售收入 string isbn()const {return…
类的基本思想是数据抽象和封装,定义类就是定义一个抽象数据类型. 类中的所有成员必须在类中声明,也即默认定义在类中的成员全部为声明,除非显式的定义成员函数的函数体.成员函数是在类中声明的,定义可以在类内,也可以在类外,在类内定义时,为隐式内联,对于内联函数允许放在头文件,被多次定义. 在类的普通成员函数体内,成员函数是使用隐式的this指针来识别具体对象的.this指针是隐式定义的,在类内任何地方都不允许再次定义名为this的变量. 对于一个具体对象来说,它内部的this指针是const的,即是个…
1.关于类的const对象 const对象只能调用声明为const的成员函数,在这篇csdn博客中也讨论了这个问题. 究其原因是因为 const 对象A 调用了非const函数F, F因为没有const约束可以修改A对象内的成员, 这不就违反了原来对A 声明const的本意了吗? 反之,非const对象调用const函数则是可以的. 2.基于const的重载 关于const修饰的成员函数可以详见这篇新浪博客! 基于成员函数是否为const,可以重载一个成员函数: 基于一个指针形参是否为const…
当一个对象的引用或者指针离开作用域时,析构函数不会执行. 构造函数有初始化部分(初始化列表)和函数体. 析构函数有析构部分和函数,但析构函数的析构部分是隐式的.…
第十三章 类继承 1.类继承:扩展和修改类. 2.公有继承格式:冒号指出B类的基类是A,B是派生类. class B :public A { ... }: 3.派生类对象包含基类对象.使用公有派生,基类的公有成员将成为派生类的公有成员:基类的私有部分也将成为派生类的一部分,但只能通过基类的公有和保护方法访问.派生类对象存储了基类的数据成员(派生类继承了基类的实现):派生类对象可以使用基类的方法(派生类继承了基类的接口). 4.需要在继承特性添加什么呢?首先,派生类需要自己的构造函数.然后,派生类…
13.0 序 这一章我们就来看看python中类是怎么实现的,我们知道C不是一个面向对象语言,而python却是一个面向对象的语言,那么在python的底层,是如何使用C来支持python实现面向对象的功能呢?带着这些疑问,我们下面开始剖析python中类的实现机制.另外,在python2中存在着经典类(classic class)和新式类(new style class),但是到Python3中,经典类已经消失了.并且python2官网都快不维护了,因此我们这一章只会介绍新式类. 13.1 p…