类
个人理解:类 及分类 目的是把所有相关的东西归纳到一起 比如说正方形类、圆形类 其中可以包含数据成员和函数成员 类似于C语言的结构,可以说是自己定义的一种新的数据类型
关键字 class
例:
声明部分:
---------------------------------------------
class yuanxing{//圆形
public:
double r;//半径
double mianji();//面积
double zhouchang();//周长
}
----------------------------------------------
定义部分:
----------------------------------------------
double yuanxing::mianji()
{return 3.14*r*r;}
double yuanxing::zhouchang()
{return 2*r*3.14;}
以如上的格式定义了名为”yuanxing”的类 其中包含了double类型的数据成员 半径和函数成员 面积和周长 数据成员和函数成员合称类成员
声明数据成员的语法形式类似于定义变量,所不同的是声明数据成员不能初始化
函数成员可以直接访问本类中的数据成员,可以直接调用本类中的其他成员
类的访问权限有3种
Public(公有权限)
Protected(保护权限)
Private(私有权限)
拥有公有权限的成员可以被类外部直接访问 剩余两种权限不能呗外部直接访问
重载函数:不同函数成员之间可以重名,即重载,但是重载函数的形参个数不能相同,或者数据类型不能相同 例如 mianji(int a); mianji(double a); mianji(int a, int b);就为三个重载函数
内联函数:关键字”inline” 可省略函数跳转和数据传递的过程。在编译源程序时将函数代码之间嵌入没一个调用语句出,而在执行时不再进行函数的跳转和数据传递。在做大的项目时重复利用次数多可以提高执行速度。
构造函数:用于数据成员的初始化
构造函数名必须与类名相同
构造函数由计算机自动调用
构造函数通过形参传递初始值,实现对新建对象数据成员的初始化(类似于普通函数的传值)
构造函数可以重载,可提供多种形式的对象构造方法
构造函数通常是类外调用,其访问权限应设置为public或protrcted,不能设置为private。
如果一个类没有定义构造函数,编译器在编译时将自动添加一个为空的构造函数
析构函数:与构造函数完全相反(类似于new和delete),结束生命周期,清理内存
~类名
析构函数由计算机自动调用,程序员不能直接调用,在函数结束时会自动执行
同样类外调用,应设置为public或protrcted
没有定义会自动建立一个为空的析构函数
友元函数:关键字”friend”
友元函数定义的对象可以访问本类中的所有类成员,不受限制
友元函数式类以外的其他函数,不是类的成员
友元关系是单向的
友元关系不能传递
类与对象的编译原理:
每个对象所占用的内存空间都等于类中全部数据成员所需内存空间的总和
多个同类对象共用一个函数,内存中只需要保存一份函数代码