1、每个类可没有成员,也可以定义多个成员,成员可以是数据、函数或者类型别名。
2、创建一个类类型变量时,编译器会自动使用一个构造函数来初始化该对象,构造函数是一个特殊的、与类同名的成员函数,用于给每个数据成员设置适当的初始值。
3、在类内部,声明成员函数是必需的,而定义成员函数则是可选的,在类内部定义的函数默认为inline。
4、将关键字const加在形参表之后,就可以将成员函数声明为常量,const成员不能改变其所操作的对象的数据成员。
5、并非所有类型都必须是抽象的。标准库中的pair类就是一个实用的、设计良好的具体类而不是抽象类。具体类会暴露而非隐藏其实现细节。
6、数据抽象和封装提供了两个重要优点:避免类类部出现无意的、可以破坏对象状态的用户级错误;随时间推移可以根据需求改变或缺陷报告来完善类实现,而无须改变用户级代码。
7、可以在类定义体内部指定一个成员为inline,作为其声明的一部分。或者,也可以在类定义体外部的函数定义上指定inline。在声明和定义处指定inline都是合法的。
8、如果在多个文件中定义一个类,那么每个文件中的定义必须是完全相同的。
9、在创建类的对象之前,必须完整地定义该类。必须定义类,而不只是声明类,这样,编译器就会给类的对象预定相应的存储空间。
10、因为只有当类定义体完成后才能定义类,因此类不能具有自身类型的数据成员。然而,只要类名一出现就可以认为该类已声明,因此类的数据成员可以是指向自身类型的指针或引用。
11、定义了一个类类型之后,可以按以下两种方式使用:将类的名字直接用作类型名;指定关键字class或struct,后面跟着类的名字。
12、类的定义以分号结束,分号是必须的,因为在类定义之后可以接一个对象定义列表。
13、最常见的是在这样的函数中使用this:该函数返回对调用该函数的对象的引用。
14、在普通的非const成员函数中,this的类型是一个指向类类型的const指针,可以改变this所指向的值,但不能改变this所保存的地址。在const成员函数中,this的类型是一个指向const类类型的对象的const指针。既不能改变this所指向的对象,也不能改变this所保存的地址。
15、可变数据成员永远都不能为const,甚至当它是const对象的成员时也如此,因此,const成员函数可以改变mutable成员。要将数据成员声明为可变的,必须将关键字mutable放在成员声明之前。
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。