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吧。

 

 

posted @ 2018-03-15 09:38  一只大公鸡  阅读(109)  评论(0)    收藏  举报