四、命名空间
1、为什么需要命名空间
由于c++完全兼容c语言
2、什么命名空间
c++中设计一种对全局作用域再次划分逻辑作用域是一种新的解决命名冲突的技术
namespace 空间名
{
全局变量
函数
结构、联合、枚举
类
}
3、如何使用
1、域限定符
空间名 :: 标识符
2、导入名字空间
using namespace 空间名;
五、c++中专门管理堆内存的语句,而c语言中只能使用标准库函数来管理内存
new 分配内存,
delete 释放内存,
都是申请和释放堆内存,
申请失败的话,malloc会返回空指针,而delete会直接产生std :: bad_alloc异常
c标准库函数 | 运算符/关键字 |
---|---|
不可以初始化 | 可以初始化 |
都是申请和释放堆内存, | |
申请失败的话,malloc会返回空指针 | 而new会直接产生std :: bad_alloc异常 |
malloc参数是字节数 | new是类型 |
而malloc返回的是void* 类型的地址 | new返回的是对应类型的地址 |
malloc和free只是申请内存 | new与delete还会进行构造和析构函数 |
继承:
1、在设计类的时候考虑现有的类是否能解决一部分问题,如果有则继承该类。
2、把一个复杂的问题拆封成若干个小问题,然后每个问题设计一个类去解决,最后使用继承把这些类型合并在一起达到解决问题的目的。
多态:指令的多种形态。
当发出一个指令时,系统会根据实际情况去执行相应操作,这种特性就叫多态(指令的多种形态)
如:重载过的函数,编译器会根据调用时的实参类型,决定最终调用哪儿个函数,由于该过程发生在编译时,因此也叫编译时多态。
八、类和对象
类: 一种由程序员设计的数据类型,相当于C语言中的结构。
对象: 由类创建出的变量,相当于C语言中的结构变量。创建对象的过程也叫实列化
类型的设计格式:
class 类名
{
private: //可以省略
成员变量;
public:
成员函数;
};
//注意:成员的默认权限是private
对象的实例化:
类名 对象名;
类名* 对象指针 = new 类名;
1、成员函数中可以直接访问成员变量。
2、一般会把成员变量设置为private,不可以直接在外界访问。
3、给需要外界使用的成员设计 getxxx、getxxx。
public: 可以在任何位置访问
protected: 可以在成员函数和子类中访问。
private: 只能在成员函数中访问。
九、构造函数和析构函数
构造函数:类的同名成员函数,当类对象实列化时会自动执行,一般负责对象的初始化和资源申请。
-
默认情况下,编译器会自动给类生成无参构造函数,如果显式实现了构造函数,则不再生成。
-
构造函数必须是public,否则无法实例化对象。
-
构造函数可以重载,可以有多版本
-
带参构造函数的调用:
Test t (实参);
Test* p = new Test (实参);
test t【10】 = {{}{}{}{}}
析构函数:负责类对象销毁时自动执行的函数。
1、析构函数必须是public
2、没有参数,没有返回值
3、当对象的生命周期过期时或使用delete销毁对象时自动调用。
5、如果没有显式实现析构函数,编译器会自动生成一个什么都做的析构函数。