概述:
C++语言非常的复杂,有很多种编程范式:面向对象范式,泛型编程范式,元编程范式等。之所以复杂是因为C++语言所描述的真是世界是复杂的。C++语言经历了一系列的发展,总的原则是要让编程方便而效率又不会损失太多。
本系列课程主要学习面向对象编程,也就是使用C++语言中的面向对象范式。
本周主要学习C++中最简单的类的实现:不带指针的类的实现。这个其实和面向对象没什么关系,主要还是强调封装,把数据和操作数据的函数放在一起,这个称为“基于对象”的设计,而且还是“基于对象”设计中最简单的带指针的类的实现。
其实,带不带指针不是本质,本质是类的所有成员都具有合适的内存管理行为(因为都是值类型,class默认为值类型生成合适的内存管理代码)。
细节:
1. 头文件由C到C++的变化如 #include <stdio.h> ---> #include <cstdio>
2. 头文件中的防卫式声明---同C语言
3. inline函数可实现在类的定义中(无需指定inline),或在.h文件中实现在类外(必须指定inline).inline只是一种请求,复杂的函数的这种请求基本不可能成功。
4. class的访问权限:private,protected,public
5. 函数的参数能用引用就必须用引用,能加const就必须加const
6. 友元函数和友元类可以直接访问其朋友类的private域
7. this指针即指向调用函数对象的指针,其实和C无本质区别,如C++中Obj.some_func(param)被编译器修改为C中对应的的 some_func( &pObj, param );其中&pObj就是this指针的实参
8. 三类非常重要的函数:
a) 构造函数(对象如何产生)
b) 析构函数(对象如何消亡)
c) 复制控制类函数( 拷贝构造函数和operator=() )描述对象如何被复制
本周的类不涉及资源管理,并是值类型,所以只需要实现构造函数,其余两类函数,C++语言默认生成的就足够好了。
9. 运算符重载
这个要谨慎使用,有无数的坑等着你,最好能不使用,而直接使用普通的函数。不过,对于一些类,人们常常用运算符来操作它们,也可以使用一下运算符重载,小心,小心一定要小心!