面向对象设计_C++_类
来源:互联网 发布:淘宝用支付宝登录不了 编辑:程序博客网 时间:2024/05/16 12:59
精通一门语言不适合我,我喜欢快速掌握一门语言的50%。
面向对象程序设计的三大特点是:封装、继承、多态。相对与面向过程,封装实现了类的接口和实现的分离,其中接口是用户可以使用的函数,实现包括了私有函数、私有数据等;继承,实现了代码的复用;多态是面向对象的核心,通过虚函数实现接口复用,增加编程的方便和多样性。
类的成员主要包括数据成员和成员函数,也可能有类型成员,如:typdef int num;类对象的大小,就是非静态数据成员的大小,而静态成员存放在全局数据区。成员函数与面向过程的函数一样,也是存放在代码区。只不过每个成员函数都有一个隐藏的this形参,this形参的类型是A * const,即指向类类型的常量指针。当通过类对象调用成员函数的时候,会将对象的地址赋值给this形参,成员函数中对类中非静态数据成员的操作都是通过this指针实现的。
const函数中,const修饰的就是this形参。
一个类中有几个特殊函数,如果用户没有自定义这些函数,编译器会为我们定义。其中包括了:构造函数,拷贝构造函数,赋值运算符以及析构函数。
函数:一般类型的参数可以通过寄存器传递,将实参先赋值给某些特定的寄存器,然后跳转到调用函数的代码,再将寄存器赋值给调用函数的形参。返回值也一样,函数执行完后,将返回值赋值给一个寄存器,然后回到函数的调用位置,继续执行,如果要使用返回值的话,就特定寄存器的值赋给一个变量,如果不用,则寄存器可以为程序所用,里面的值不知道什么时候就会被覆盖。如果传递的是一个类,结构体等,则参数和返回值会通过内存中的某些空间,实现传递。
引用都会转换成指针操作。
构造函数:与类名相同,无返回值,实现对类成员的初始化。初始化的方式最好选择初始值列表,如果在函数体初始化,则数据成员已经完成了默认初始化,函数体内是对数据成员的赋值而已。
拷贝构造函数:第一个参数是自身类类型的引用的构造函数。用于通过=初始化对象,以及参数和返回值是非引用时,传参和返回返回值。类对象通过()完成初始化时,编译器会选择最合适的构造函数,也可能选择拷贝构造函数。
赋值运算符:将=运算符重载。重载运算符本质上是函数,赋值运算符就是一个名为operator=的函数。一般的形式是:A& operator=(const A&);
析构函数:函数名由波浪线加类名组成,无返回值和参数。包括了函数体和析构部分(隐藏),先执行函数体,后执行析构部分,与构造函数相反。销毁类类型的成员时,会调用起析构函数,内置类型没有析构函数,销毁时什么都不做。
- 面向对象设计_C++_类
- 读书笔记_C#技术内幕_第八章(设计面向对象的程序)
- 面向对象变成_C++_继承和多态
- 33_面向对象_06_虚拟机内存管理_垃圾回收机制_C++和java的比较
- 面向对象_定义类
- Java_面向对象_类
- 翁凯_面向对象程序设计_设计一个表示分数的类Fraction
- 面向对象_学生类_定义
- 面向对象_学生类_使用
- 面向对象_手机类_定义
- 面向对象_手机类_使用
- 黑马程序员_C#面向对象学习笔记
- 黑马程序员_c#面向对象基础:属性
- 黑马程序员_C#面向对象总结
- 黑马程序员_C#面向对象总结
- 第03讲-面向对象设计原则_设计实验
- 03-04面向对象设计原则_设计实验
- 设计模式_面向对象设计原则简述
- 串口收发字符转换为整数
- 作业3.3
- 利用waitpid()的tcpserv
- java中的多态和继承---"编译看左边,运行看右边"(多态执行)
- jQuery ui 百叶窗blind方向设置
- 面向对象设计_C++_类
- 不要在上班时间看书 经典啊
- Java的集合类
- MOOC《Linux内核分析》——学习总结
- Spring学习笔记(8)-----------依赖注入
- libsvm安装及使用
- 敏捷团队高效的完成软件架构设计
- armadillo库之对称矩阵的特征值与特征向量
- 欧拉筛法求欧拉函数