C++笔记(22)——this指针、对象数组、类作用域
1、this指针
类的每一个成员函数都有一个this指针,该指针指向调用成员函数的对象,被作为隐藏参数传递给成员函数。在成员函数的括号后面加const限定符时,无法通过this指针修改对象的值。
使用示例:比较两个对象数据成员的大小时,程序无法直接访问对象数据,可以通过成员函数,成员函数返回值到程序中再比较。也可以设计一个成员函数,可以访问两个对象的数据,但需要第二个对象作为参数(即成员函数的参数为该类的一个对象),如下图:
2、对象数组
声明像普通数组一样,形式如下:
Stock mystuff[4];
未显式初始化对象,调用默认函数。也可以显式初始化,如下:
Stock stocks[2]={Stock("name1",22.2,10),Stock("name2",22.6,23)};
先用默认函数构造数组,然后花括号中的构造函数创建临时对象,然后将临时对象的内容复制到相应的元素中。
3、类作用域
类中成员名(包括数据和函数)的作用域为整个类,即只在类内知道,类外不可知,所以不同的类中可以使用相同的成员名,调用公有部分时通过对象。
(1)作用域为类的常量
在类的声明中不可const int m=1;这样直接定义常量,因为类在声明时没有创建对象,还没有分配存储空间。处理方法有下面两种:
①使用枚举,声明时不会创建类数据成员,且所有对象中都不包含枚举。
class Bakery
{
private:
enum {m=8};
double cost[m];
...
}
②使用关键字static,该常量将和其他静态存储变量存在一起,而不存储在对象中。
class Bakery
{
private:
static const int m=8;
double cost[m];
...
}
(2)作用域内枚举