现在的位置: 首页 > 综合 > 正文

复习小记—-第12章 类

2014年09月05日 ⁄ 综合 ⁄ 共 1033字 ⁄ 字号 评论关闭

1.         将const关键在加在成员函数后面,可以将成员函数声明为常量:

double  avg_price()  const;

const成员函数不能改变其所操作的对象的数据成员。const关键字必须同时出现在声明和定义中。

2.         前向声明是指声明一个类但不定义它。一个类在声明之后、定义之前是以个不完全类型。不完全类型只能以有限的方式使用:不能定义该类型的对象,只能定义指向该类型的指针或引用,或者用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数。

3.         基于成员函数是否是const,或基于一个指针形参是否指向const可以重载一个函数。const对象只能使用const成员。非const对象可以使用任一成员,但非const版本是一个更好的匹配。

4.         将数据成员声明为mutalbe,可以使其在const函数中也可以被修改。

5.         可以认为构造函数分为两个阶段执行:先进行的是初始化阶段,然后是普通的计算阶段——该阶段由构造函数函数体中的所有语句组成。不管成员是否在构造函数初始化列表中显式初始化,类类型的数据成员总是在初始化阶段初始化。

6.         在类中初始化const或引用类型的数据成员的唯一机会是在构造函数初始化列表中。因此必须对任何const或引用类型成员使用初始化式,也必须对没有默认构造函数的类类型的任何成员使用初始化式。

7.         构造函数初始化列表中成员的排列顺序并不一定是成员初始化的顺序,尽量按照与成员声明一致的次序编写构造函数的初始化列表。

8.         当一个类没有定义任何构造函数时,编译器会自动合成一个默认构造函数:对类类型成员通过运行个字的默认构造函数来进行初始化。内置和复合类型的成员,只对定义在全局作用域中的对象才初始化,当对象定义在局部作用域中时,内置或复合类型的成员不进行初始化。

9.         定义只接受一个参数的构造函数可以用来实现类类型的隐式转换:

class Item
{
         int id;
         string name;
public:
         Item(string nm)
         {
                   name=nm;
                   id=0;
         }
};
void main()
{
         Item item="using implicit function";

}

若想抑制隐形转换,可以在单参数构造函数前添加关键字explicit

10.    
static
成员函数不能被声明为const,也不能被声明为virtual

 

抱歉!评论已关闭.