一、类和对象
-
类是对象抽象,对象是一个具体实体;
-
类是一个数据类型(类似于C语言中的结构体,还可以是函数)
-
对象是通过类这一个数据类型所定义的变量;
-
类中主要包含两种类型的成员:
成员变量 -- > 描述的类的属性;
成员函数 --> 描述的类的行为;
如何去声明一个类:
class 类名 /*类头, class可以用struct替换,成员的默认权限有所不同,*/
类体
{
属性: 类的成员变量
行为: 类的成员函数
};
注意:对于类的成员的属性主要包含三种:
private: 私有成员,只能在当前类中可以访问;
protected:受保护成员,只能在当前类或者派生类中访问;/*派生类的时候,会做介绍*/
public:公有成员,可以在任意的地方访问
声明一个类的形式:
1. 多个文件:(在实际应用过程中,大多采用此方式实现)
.h文件做类的声明(成员的声明);
.cpp文件做成员函数的定义;
2. 一个文件:(针对比较简单的类的时候使用)
将成员函数在类的内部声明的时候做定义;
将成员函数在类的外部的做定义,类的内部只需要声明函数就ok;
二、构造与析构函数
构造函数:
-
当声明类的时候,如果没有实现构造函数,系统会执行默认的构造函数;
-
构造函数的函数名和类名相同,并且没有返回值的函数是构造函数;
-
构造函数的参数可以设计者根据需求自行设计,所以参数可以不同,也就说构造函数 可以重载;
-
构造函数的参数可以设计默认参数值;
-
构造函数的作用,用于对象的初始化(创建对象的时候,对对象的成员进行初始化的 过程);
析构函数:
-
在声明一个类的时候,如果在类中没有实现析构函数,系统会自动生成一个默认析构 函数;
-
所谓的析构函数,是构造函数的反函数,函数名为(~类名),没有返回值也没有参 数的函数;
-
析构函数可以由系统自动去执行,也可以由程序显示调用执行;
-
析构函数不可以重载,因为析构函数没有参数;
复制构造函数;
三、static 关键字的含义
C语言中:
1. 修饰局部变量:改变了变量的存储位置和生命周期
-
普通的局部变量:存储位置为栈区,生命周期为局部模块内(模块内程序执行的时候开辟空间,到模块执行结束的时候,释放资源);
-
static修饰的局部变量:存储位置在静态存储区,生命周期是整个程序执行期间;
2. 修饰全局变量和函数:改变了链接属性(作用域)
-
普通的全局变量或者函数:作用域是整个程序(程序的任意地方都可以链接)
-
static修饰的全局变量或者函数:作用域在定义的文件中有效,(只能在当前文件中可以链接);
CPP中:
修饰成员:静态成员,该成员被设置为多个对象共同拥有的成员,不再属于具体的某一个对象;
访问形式:
1. 对象.成员;
2. 类::成员;
四、const关键字
在C语言中:
将变量常量话,也就说用来修饰一个只读变量;
-
int const *p; 将指针的指向常量化
-
int *p; 将指针的指向常量化
-
int * const p; 将指针的值常量化
-
const int *const p; 将指针的值和指向常量化
在CPP中
const成员函数:
-
用const修饰的成员函数, 在成员函数声明和定义的时候,在函数头的后面添加const;
-
在const成员函数内部,不能直接或者间接的修改对象的值;
-
在const成员函数内部不能调用非const成员函数,可以调用cosnt成员函数;
-
const成员函数可以被非const成员函数调用。
const对象:
-
用const修饰的对象,在创建对象的时候,需要将其进行初始化,后续不能来修改对象的 值;
-
const对象不能调用非const成员函数,避免间接修改cosnt对象的值;
-
cosnt对象,只能调用cosnt成员函数;
const成员变量:
-
用const修饰的成员变量,在创建对象的时候,需要将对应的const成员变量进行初始 化,后续不能来修改成员变量的值;
-
onst成员变量初始化的时候,只能通过参数列表传递初始化值;
-
const成员变量的值,在对象创建后,不能修改其值。