1、类的定义,以Sales_item为例
class Sales_item{
public:
//Sales_item对象所调用的操作
private:
std::string isbn;
unsigned units_sold;
double revenue;
};//分号不能丢失
类定义以关键字class开始,其后是该类的名字标识符,类体位于花括号里面,花括号后面必须跟一个分号。
类体可以为空,类体定义了组成该类型的数据的操作,这些操作和数据是类的一部分,也称为类的成员。操作成为成员函数,而数据则成为数据成员。
2、类的数据成员
定义类的数据成员和定义普通变量有些相似,有个非常重要的区别就是:不能把类成员的初始化作为其定义的一部分。当定义数据成员时,只能制定该数据成员的名字和类型,类不是在类定义里定义数据成员时初始化数据成员,而是通过构造函数的特殊成员函数控制初始化。(PS:构造函数后面会说明,我之前学过java,所以知道构造函数就是用于类的初始化,相信各位大神都知道。不明白的人也不要着急,这个c++系列就是一步一步的个人学习总结)
3、访问标号
上面用到的访问标号是public和private,访问标号负责控制使用该类的代码是否可以使用给定的成员(成员包括成员函数和数据成员)。类的成员函数可以使用类的任何成员,而不管其访问级别。访问标号public、private可以多次出现在类定义中。给定的访问标号应用到下一个访问标号出现时为止。
类中public部分定义的成员在程序的任何部分都可以访问,一般把操作放在public部分,这样程序的任何代码都可以执行这些操作。不是类的组成部分的代码不能访问private成员,通过设定Sales_item的数据成员为private,可以保证对Sales_item对象进行操作的代码不能直接操纵其数据成员。
4、使用struct关键字来定义类
c++支持另一个关键字struct,它也可以定义类类型,struct是从c语言中集成过来的。
如果使用class关键字来定义类,那么定义在第一个访问标号前的任何成员都隐式指定为private;如果使用struct关键字,那么这些成员都是默认为public。
可以等效地定义Sales_item类:
struct Sales_item{ //这里不是class关键字,而是struct
//无需特别声明public访问标号,默认即public
private:
std::string isbn;
unsigned units_sold;
double revenue;
};//同样也有一个分号结尾
使用class和struct关键字定义类的唯一差别在于默认访问级别:默认情况下,struct的成员为public,而class的成员为private。
个人总结及注意点:
(1)说到类的成员不要仅仅只意识到数据成员,同时还有成员函数。所以要注意c++中成员包括数据成员和成员函数。
(2)struct是c语言中学习过的,当时只知道需要定义一个数据结构的时候要用到struct,想不到它还能够跟c++的class关键字起到相同的作用。这句话“相同的作用”我只是自己感觉,说的不对的地方还请大神指正。