随笔分类 - C++面向对象编程
摘要:和其他类一样,位于继承体系中的类也需要控制当其对象执行一系列操作时发生什么样的行为,这些操作包括创建、拷贝、移动、赋值和销毁。
阅读全文
摘要:每个类都有自己的作用域,在这个作用域内我们定义类的成员。
阅读全文
摘要:每个类分别控制自己的成员初始化过程,与之类似,每个类还分别控制着成员对于派生类来说是否可访问。受保护的成员如前所述,一个类使用protected关键字来声明那些它希望与派生类分享但是不想被其他公共访问使用的成员。protected说明符可以看做是public和private中和后的产物:
阅读全文
摘要:纯虚函数和普通的虚函数不一样,一个纯虚函数无须定义。我们通过在函数体的位置(即在声明语句的分号之前)书写=0就可以将一个虚函数说明为纯虚函数。其中,=0只能出现在类内部的虚函数声明语句处。指的注意的是,我们也可以为纯虚函数提供定义,不过函数体必须定义在类的外部。也就是说,我们不能在类的内部为一个=0...
阅读全文
摘要:如前所述,在C++语言中,当我们使用基类的引用或指针调用一个虚成员函数时会执行动态绑定。因为我们直到运行时才能知道到底调用了那个版本的虚函数,所以所以虚函数都必须有定义。通常情况下,如果我们不使用某个函数,则无须为该函数提供定义。但是我们必须为每一个虚函数都提供定义,而不管它是否被用到了,这是因为连...
阅读全文
摘要:定义基类对于基类,我们需要记住的是作为继承关系中根节点的类通常都会定义一个虚析构函数。基类通常都会定义一个虚析构函数,即使该函数不执行任何实际操作也是如此。成员函数和继承派生类可以继承其基类的成员,也可以对基类中的虚函数进行重新定义。换句话说,派生类需要对这些操作提供自己的新定义以覆盖(overri...
阅读全文
摘要:面向对象程序设计基于四个基本概念:数据抽象、封装、继承和动态绑定。类的基本思想是数据抽象和封装。1 数据抽象数据抽象是一种依赖于接口和实现分离的编程技术。类的接口包括用户所能执行的操作;类的实现则包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。2 封装封装实现了类的接口和实现的分...
阅读全文