面向对象设计_C++_类

来源:互联网 发布:淘宝用支付宝登录不了 编辑:程序博客网 时间:2024/05/16 12:59

精通一门语言不适合我,我喜欢快速掌握一门语言的50%。


面向对象程序设计的三大特点是:封装、继承、多态。相对与面向过程,封装实现了类的接口和实现的分离,其中接口是用户可以使用的函数,实现包括了私有函数、私有数据等;继承,实现了代码的复用;多态是面向对象的核心,通过虚函数实现接口复用,增加编程的方便和多样性。


类的成员主要包括数据成员和成员函数,也可能有类型成员,如:typdef  int   num;类对象的大小,就是非静态数据成员的大小,而静态成员存放在全局数据区。成员函数与面向过程的函数一样,也是存放在代码区。只不过每个成员函数都有一个隐藏的this形参,this形参的类型是A * const,即指向类类型的常量指针。当通过类对象调用成员函数的时候,会将对象的地址赋值给this形参,成员函数中对类中非静态数据成员的操作都是通过this指针实现的。

const函数中,const修饰的就是this形参。


一个类中有几个特殊函数,如果用户没有自定义这些函数,编译器会为我们定义。其中包括了:构造函数,拷贝构造函数,赋值运算符以及析构函数。

函数:一般类型的参数可以通过寄存器传递,将实参先赋值给某些特定的寄存器,然后跳转到调用函数的代码,再将寄存器赋值给调用函数的形参。返回值也一样,函数执行完后,将返回值赋值给一个寄存器,然后回到函数的调用位置,继续执行,如果要使用返回值的话,就特定寄存器的值赋给一个变量,如果不用,则寄存器可以为程序所用,里面的值不知道什么时候就会被覆盖。如果传递的是一个类,结构体等,则参数和返回值会通过内存中的某些空间,实现传递。

引用都会转换成指针操作。

构造函数:与类名相同,无返回值,实现对类成员的初始化。初始化的方式最好选择初始值列表,如果在函数体初始化,则数据成员已经完成了默认初始化,函数体内是对数据成员的赋值而已。

拷贝构造函数:第一个参数是自身类类型的引用的构造函数。用于通过=初始化对象,以及参数和返回值是非引用时,传参和返回返回值。类对象通过()完成初始化时,编译器会选择最合适的构造函数,也可能选择拷贝构造函数。

赋值运算符:将=运算符重载。重载运算符本质上是函数,赋值运算符就是一个名为operator=的函数。一般的形式是:A& operator=(const A&);

析构函数:函数名由波浪线加类名组成,无返回值和参数。包括了函数体和析构部分(隐藏),先执行函数体,后执行析构部分,与构造函数相反。销毁类类型的成员时,会调用起析构函数,内置类型没有析构函数,销毁时什么都不做。

2 0
原创粉丝点击