类的难点解析:
类三大特性:继承,多态,封装
访问权限控制:public private protect
Inline成员函数:1 在类内部定义的成员函数,将自动被作为inline处理
2 如果是显示声明inline 即不放在类定义体内,该函数定义应该放在.hl文件里,因为它对于使用它的,cpp文件要可见,仅仅声明是不够的。
3 inline关键字的指定既可以在类里面声明时指定也可以在类外面定义指定。
4 定义lnline函数有3中方法。
不完全类型:如果该类是不完全的,则其数据成员只能是指向此类的指针或引用。
Class Note
{ int a; Note *pte; Note &pte};
编程常见例题:定义两个类 X和Y,X中有一个指向Y的指针,Y中有一个X类型的对象。
Class Y; Class X{Y * py}Class Y{X objx; }
This 指针:百年避不开的话题 :何时需要用到this呢?
当我们需要将一个对象作为整体引用时:就需要
Screen& Screen::move(int x)
{
Return *this;
}
这样之后可以通过move函数获取对象其他的成员:obj.move().move();
Const函数:const对象只能使用const成员 ,给予const关于指针和引用可以重载。
Const成员函数等价于constthis 常量成员函数
类的作用域:
l 函数的返回类型不一定在类的作用域中详情看C++primer第四版 P381
类作用域的名字查找顺序:1 先检查成员函数局部作用域中的声明:注意函数参数的声明
2检查所有类成员的声明
3检查此成员函数定义前的作用域 例如全局变量
如果函数中的成员变量被参数屏蔽,可以通过this等手段引用
构造函数:1构造函数: 由于常量构造函数的缘故所以不需要Const构造函数。
2初始化列表:初始化顺序是以类中声明的为主。
3不带参数的构造函数与只有一个参数的构造函数(但是有默认实参)导致默认构造函数有歧义
Static类成员:不是类对象的组成部分
Static成员函数:不能声明为Const也不能声明为虚函数,没有this指针。
Static数据成员:必须在定义体的外部定义并且初始化,且关键字static只能在类中声明,但是有一个例外const static 数据成员可以在类的定义体中初始化,但是其任然需要在类的定义体外面定义但是此时可以不提供初始值,另外static数据成员可以做默认实参。
个人意见,有不对的地方欢迎指出