1.类简单地说是一个性的数据类型。类当中有数据成员,和成员函数。类的基本思想就是体现出数据的抽象和封装。
2.这里只需要说明一个问题即可:就是类成员函数的const类型:
class SCREEN
{
public:
const int get(const int& i , const int& j)const;
};
这里需要解释一下const int get(const int& i , const int& j)const;这一句的四个const分别表示是什么?本来这个内容是在第七章函数的时候已经介绍过了。在这里有了进一步的深刻了解。下面详细介绍一下:
第一个const 表示:const int 是表示返回类型是const 的int型。如果这里的第一个const存在的话,那么第四个const必须存在。
第二个const表示:const int& i 是参数类型,表示const的引用类型,避免传递参数进行复制实参。
第三个跟第二个是一样的。
第四个const表示:当第四个const存在的时候,成员函数叫做const成员函数。这个const表示的是在调用成员函数当中隐含了this指针指向类中的数据成员的类型是const。即在调用成员函数的时候,调用成员函数的对象的数据成员是const类型的。即此时的this指向的数据成员是const类型。而this指针本身就是一个const类型的。有了第四个const,那么this指向的数据成员也就是const类型的咯。
3.可变的数据成员:
有时候我们希望类的数据成员(甚至在const成员函数里面)可以修改。我们可以通过将他们声明为mutable来实现。如: mutable size_t occur;occur就是一个可变的值。即可以修改的值。
4.构造函数初始化的方式问题:
一是通过初始化列表来实现初始化,这一类的叫做构造函数初始化列表,一般用在含有const数据成员和引用的时候需要采用初始化列表。
二是通过在构造函数体内进行赋值来实现初始化。
5.隐形类型转换:这个操作是通过构造函数来实现类型转换,具体的是含有单个形参的构造函数将形参的类型转变成类类型的数据。如果需要需要抑制隐形类型转换可以将构造函数声明为explicit。即explicit Sales_item():isbn(),units_sold(0),revenue(0){}这就抑制了隐式转换。
6.友元:友元机制允许一个类将对其非公有成员的访问权授予指定的函数或者类。
7.static类成员:记住一点即可:除了const的数据成员可以在类内初始化,其他的类型的数据成员如果声明为static的话,都是在类内定义,在体外初始化的。