C++学习基础之基类和派生类
2016-09-12 21:58
225 查看
派生类的继承方式总结:
继承方式 | 说明 |
public | 基类的public和protected的成员被派生类继承后,保持原来的状态 |
private | 基类的public和protected的成员被派生类继承后,变成派生类的private成员 |
protected | 基类的public和protected的成员被派生类继承后,变成派生类的protected成员 |
1. 友元函数必须在类中进行声明而在类外定义,声明时须在函数返回类型前面加上关键字friend。友元函数虽不是类的成员函数,但它可以访问类中的私有和保护类型数据成员。
2. 虚函数在重新定义时参数的个数和类型必须和基类中的虚函数完全匹配,这一点和函数重载完全不同。
3. #include <文件名>和#include "文件名"
文件包含的两种格式中,第一种格式用来包含那些由系统提供的并放在指定子目录中的头文件;而第二种格式用来包含那些由用户自己定义的放在当前目录或其他目录下的头文件或其它源文件。
4. 数组也可以作为函数的实参和形参,若数组元素作为函数的实参,则其用法与变量相同。当数组名作为函数的实参和形参时,传递的是数组的地址。当进行按值传递的时候,所进行的值传送是单向的,即只能从实参传向形参,而不能从形参传回实参。形参的初值和实参相同,而形参的值发生改变后,实参并不变化,两者的终值是不同的。而当用数组名作为函数参数进行传递时,由于实际上实参和形参为同一数组,因此当形参数组发生变化时,实参数组也随之发生变化。
注:实参数组与形参数组类型应一致,如不一致,结果将出错;形参数组也可以不指定大小,在定义数组时数组名后面跟一个空的方括号,为了在被调用函数中处理数组元素的需要,可以另设一个参数,传递数组元素的个数。如:int sum(int array[],int n);
5. 重载、覆盖和隐藏的区别?
函数的重载是指C++允许多个同名的函数存在,但同名的各个函数的形参必须有区别:形参的个数不同,或者形参的个数相同,但参数类型有所不同。
覆盖(Override)是指派生类中存在重新定义的函数,其函数名、参数列、返回值类型必须同父类中的相对应被覆盖的函数严格一致,覆盖函数和被覆盖函数只有函数体 (花括号中的部分)不同,当派生类对象调用子类中该同名函数时会自动调用子类中的覆盖版本,而不是父类中的被覆盖函数版本,这种机制就叫做覆盖。
下面我们从成员函数的角度来讲述重载和覆盖的区别。
成员函数被重载的特征有: 1) 相同的范围(在同一个类中);2) 函数名字相同;3) 参数不同;4) virtual关键字可有可无。
覆盖的特征有: 1) 不同的范围(分别位于派生类与基类);2) 函数名字相同;3) 参数相同;4) 基类函数必须有virtual关键字。
相关文章推荐
- C++ 学习之继承1:基类与派生类
- C++语言基础 例程 基类与派生类的转换
- C++学习笔记_1:派生类与基类关系
- C++基础--基类和派生类
- C/C++日常学习总结(第十四篇)C++基类与派生类的转换
- 学习笔记之深入浅出MFC 第8章 C++重要性质----基类与派生类:谈继承(Inheritance)
- C++学习笔记(5)——基类、派生类的构造函数、析构函数的调用顺序
- 派生类到基类的转换(c++学习笔记)
- C++基础之基类派生类指针间强转问题(基类派生类傻傻分不清)
- C++学习笔记(6)----基类和派生类的构造函数和析构函数的执行顺序
- C++入门学习:虚析构、构造中不能实现多态、基类指针指向派生类数组的弊端
- C++ Primer 学习笔记_65_面向对象编程 -概述、定义基类跟派生类
- C++ 学习(派生类到基类准还的可访问性)
- C++学习笔记(1)——基类、派生类的对象空间
- 派生类到基类的转换(c++学习笔记)
- [MFC学习之C++基础] 孙鑫视频中第三讲中提到的小测试程序(关于基类和子类的继承关系)
- C++ 基类和派生类
- C++学习笔记(4)——派生类的构造函数和析构函数
- C++学习基础知识
- C++基类、派生类构造函数调用顺序