JAVA转型C++(三):面向对象
一、类
C++中定义类的机制与JAVA很不相同。在C++中定义类的方法是:以关键字class开头,然后是类的名称。类主体用花括号括起来,并以一个分号结尾。
类的定义中需要声明数据成员与数据函数。可以在类定义的外部定义成员函数。要在类的外部定义函数,需要用类名与域解析运算符(::)来对其进行限定,以便让编译器知道该类定义属于哪个类。
类中的数据成员可以使基本数据类型,也可以是其他对象类型。我们可以使用面向对象编程中的聚合体来模拟这种对象之间的关系。
数据成员的访问以及成员函数的调用在C++中均与JAVA类似,不再赘述。需要注意的是C++中的对象实例化与基本数据类型的声明一样,都是“类名 对象名;”的形式。在C++中的new关键字是动态分配内存,返回的是新建对象的地址,而且分配的内存都是要靠delete()函数回收的,否则会造成内存泄露。
到目前为止,无论何时定义一个变量,C++都会为其分配所需的内存。常规的定义方式中,当创建变量的函数结束时,C++会释放这部分内存。这部分用于局部变量的内存成为栈。但是用new关键字(以及C语言中malloc关键字)创建的内存是一种与程序中的函数保持独立的内存。这部分内存由程序员负责分配与释放。它们统称为堆(或自由存储区)。
new运算符在堆中分配内存,然后返回其地址。如以下代码:
class Boss : public Enemy