HOUR 8 Creating Basic Classes
什么是Type?
C++中,type就是一个类,它有一定的数据及能力,有一些built-in的type如 int float等,我们也可以自己创建一个type,自己新建的type就是一个class,一个type应该告诉我们以下内容:
- 占用的memory
- hold的data
- 可以实现的action
什么是class?
class是创建object的模板,定义好class后,就可以和type一样创建object了(很简单)。一个类的本质就是相关的数据和action的一个collection。
例如定义一个电视class,电视就包括的member variable 包括功率、制式、接口, 电视的action有 开关机、换台、调音量。
class命名方法是首字母大写。
When you creat an object, you are said to instantiate it from a class.
私有成员的访问要靠一个叫 accessor的工具,这个accessor使得数据的存储细节和数据的访问分离开来。
如何使用member variables?
使用dot operator,例如
bike.speed = 6;
如何implementing member functions?
在类里面declare的function必须被defined,通过scope resolution operator来define
Creating and Deleting Objects
constructor 在初始化的时候被调用,一般用来给成员变量赋值。定义了constructor之后,我们必须定义destructor。destructor用来删除一个object,释放创建object时候申请的内存空间。
如果一个类中没有声明constructor的话,那么编译器会自动创建一个default constructor
- default constructor 不引入任何parameter,可以自己定义,也可以依赖编译器自动添加
- 只要声明了任何一个constructor,编译器就不会为class声明default constructor,这个时候如果有这个需求,就要自己去define一个default
如果一个类没有定义destructor, 编译器也会自动提供一个,只不过函数体为空
创建一个类的时候,明确的声明构造、析构函数是一个很好的编程习惯,希望我能记住这一点。
OOP的思想使得代码的重用性提高了,如果你定义了一个Printer类,别的程序员也可以拿来直接用,就好比现实生活中的printer一样,你制造了,我拿来就用,我想打印,不用我自己非得制造一台打印机。
Q&A
Q. 一个class有多大?
A. 取决于class 的成员变量有多大,成员函数不计算在class的存储中。
Q. 为什么要尽量把member variable变为私有?
A. 用户在使用这些数据的时候,不用想他们是如何存储和计算的,只是用就可以了。如果把成员变量定义为public,那也就意味着,程序中任何部分都可以访问、修改该变量,这样debug的时候你就爽了,漫天找bug吧。

浙公网安备 33010602011771号