内容:

(1)只能用成员形式重载的运算符
(2)new/delete操作符的重载
(3)封装和继承的初识
(4)继承的特性
(5)子类及其函数的特性
(6)多重继承和虚继承

1.只能用成员形式重载的运算符
(1)[] 下标操作符
(2)() 函数操作符
(3)* -> 间接操作符

2.new/delete操作符的重载

注意:
如果需要在调用构造函数之前做一些初始化工作/在调用析构函数之后做一些善后工作,则可以通过new/delete运算符重载的函数来实现

3.封装和继承的初识
3.1 概念
(1)封装
使用访问控制符对类型中的属性和行为进行访问限制的机制
public protected private
(2)继承
表达类型之间共性和特性的依存关系的一种语言机制

如:
学生类:
属性:姓名 年龄 学号
行为:吃饭 学习
教师类:
属性:姓名 年龄 职称
行为:吃饭 授课

将学生类和教师类的共性提取出来,组成人类:
属性:姓名 年龄
行为:吃饭

剩下的是学生类和教师类的特性:
学生类:
属性:学号
行为:学习
教师类:
属性:职称
行为:授课

于是发现:
人类:(姓名,年龄,吃饭)
/ \
(学号,学习)学生类 教师类(职称,授课)

人类:父类/基类
学生类/教师类:子类/派生类

3.2 继承的语法格式
class 子类名 : 继承方式 父类名1,继承方式2 父类名2,...
{
子类类型的定义;
};

继承方式:
public: 公有方式继承
protected:保护方式继承
private: 私有方式继承

练习:
vi 07inherit.cpp文件,自定义Person类和Teacher类,提供构造函数和行为

4.继承的特性
(1)一个子类类型的对象在任何时候都可以看做该类的基类类型的对象
(2)一个基类类型的对象如果作为子类类型的对象被访问,有可能引发非法内存访问错误
(3)在子类中可以访问基类中的公有和保护成员,但是不可以访问私有成员
(4)在子类中可以定义和基类中同名的标示符,子类隐藏父类(名字隐藏)

5.继承方式和访问控制符

5.1 访问控制符

访控符 访控属性 本类 子类 类外 友元
---------------------------------
public 公有的 ok ok ok ok
protected 保护的 ok ok no ok
private 私有的 ok no no ok

5.2 继承方式的特性
基类中 公有子类 保护子类 私有子类
----------------------------------
公有的 公有的 保护的 私有的
保护的 保护的 保护的 私有的
私有的 私有的 私有的 私有的

注意:
一般采用公有方式继承,保护和私有的继承方式很少使用

如:
class A
{
public:
void print(void){....}
};
class B : private A
{
public:
void show(void)
{
print();
...
}
};

class C
{
print();
};

6.子类中的构造函数和析构函数
(1)在子类的构造函数中可以显式地构造其基类部分("基类类名(实参)"),否则系统会试图以无参的形式去构造基类子对象
(2)子类中的析构函数会自动地调用父类中的析构函数从而释放基类子对象,而父类中析构函数不会自动调用子类的析构函数
(3)delete一个指向子类对象的父类指针时,被调用的仅仅是父类中的析构函数,而该析构函数不会自动调用子类中的析构,从而造成内存泄露,可以通过使用虚析构解决此问题(明天讲到)

C++_基础_运算符重载2的更多相关文章

  1. C++_基础_运算符重载

    内容: (1)输入输出运算符重载 (2)友元类和友元函数 (3)双目运算符重载 (4)单目运算符重载 (5)不能被重载的运算符 (6)只能定义为成员形式的运算符 1.输入输出运算符重载如: int n ...

  2. 网易云课堂_C++开发入门到精通_章节4:运算符重载

    课时23运算符重载 运算符重载 重载赋值运算符 Person& Person::operator=(const Person& other) { //检查自赋值 if (this == ...

  3. C++学习6-面向对象编程基础(运算符重载、类的派生与继承、命名空间)

    运算符重载 重载的运算符是具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成.重载的运算符是遵循函数重载的选择原则,根据不同类型或不同参数来选择不同的重载运算符. 运 ...

  4. C++_基础_类和对象3

    内容: (1)析构函数 (2)拷贝构造和拷贝赋值 (3)静态成员 (4)成员指针 (5)输入输出运算符重载 1.析构函数 当一个对象被创建时,自动调用构造函数进行初始化 当一个对象被销毁时,自动调用析 ...

  5. C++语言基础(17)-运算符重载

    运算符重载的格式为: 返回值类型 operator 运算符名称 (形参表列){ //TODO: } 一.在类里面实例运行符重载 #include <iostream> using name ...

  6. 面向对象程序设计-C++_课时30运算符重载——基本规则_课时31运算符重载——原型_课时32运算符重载——赋值_课时33运算符重载——类型转换

    区分初始化,赋值 #include <iostream> using namespace std; class Fi { public: Fi() {}//1构造函数 }; class F ...

  7. C++_基础_继承、多态

    内容: (1)子类中的拷贝构造和拷贝赋值 (2)多继承和虚继承 (3)多态的初识 (4)虚析构的特性和使用 (5)多态的底层实现 (6)纯虚函数.抽象类的概念 1.子类中的拷贝构造和拷贝赋值 子类中的 ...

  8. C++_基础_类和对象2

    内容: (1)构造函数 (2)初始化列表及其必要性 (3)支持自定义类型转换的构造函数 (4)this指针 (5)const对象和成员函数 (6)析构函数 1.构造函数1.1 格式: class 类名 ...

  9. java工程师_基础_阶段一_HTML笔记篇

    一.了解HTML语言 html:超文本标记语言. 二.HTML整体结构<html> <head> </head> <body> </body> ...

随机推荐

  1. C# in Depth阅读笔记2:C#2特性

    1.方法组转换 c#2支持一个从方法组到兼容委托类型的隐式转换,即如: button.click+=new eventhandler(logevent)可以写成 button.click+=logev ...

  2. apache pk nginx pk Lighttpd

    apache: 历史: APACHE:于1994年发布,是apache软件基金会的一个开放源码的网页服务器,可以在多平台下运行,由于其多平台和安全性被广泛使用,是最流行的web服务器端软件之一:特点是 ...

  3. 一致性哈希(Consistent Hashing)

    前言:对于一致性哈希已经不是罕见概念,在此只是对原有理论概念的一个整理和用自己的理解讲述,希望对新手有些许帮助,利人利己足矣. 1.概念 一致哈希是一种特殊的哈希算法.在使用一致哈希算法后,哈希表槽位 ...

  4. markdown流程图

    markdown流程图 markdown流程图 markdown流程图语法:https://github.com/adrai/flowchart.js 定义元素阶段的语法是 tag=>type: ...

  5. HTTP填坑

    HTTP知识填坑 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB",& ...

  6. Scala的类中定义内部类实战

    scala独特之处在于可以在类中定义内部类,起到对外屏蔽作用. 类中默认都是public权限.后面将讲解如何引入接口,scala中的接口与java点区别.特质/接口(Trait)

  7. Linux 网络编程基础(4) -- Ping 的C代码实现

    1.背景 在进行网络编程的时候,通常使用的协议有TCP协议,UDP协议.这些协议在简历套接字之初需要制定套接字的类型,比如TCP应当设置为 SOCK_STREAM, UDP对应的套接字应当设置为SOC ...

  8. FAQ:Python 断点调试

    Python程序调试:断点调试是必须有的功能,以Pycharm开发工具为例: 一.理论知识: 1. step into(F7)就是单步执行,遇到子函数就进入并且继续单步执行: 2  step over ...

  9. windows环境中mysql忘记root密码的解决办法

    原文地址:http://www.cnblogs.com/linuxnotes/archive/2013/03/09/2951101.html windows下重置Mysql Root密码的方法mysq ...

  10. Windows 7 with SP1简体中文旗舰版(微软MSDN原版)+ 激活密钥

    在Windows 7六个版本中,旗舰版和企业版功能性能完全一样,同属诸版本之中的最高版本.现提供Windows 7 with SP1简体中文旗舰版(微软MSDN最新原版)+ 激活密钥如下: 32位版本 ...