您的位置:首页 > 编程语言 > C语言/C++

C++primer难点之类

2014-03-05 22:24 225 查看
类的难点解析:

类三大特性:继承,多态,封装

访问权限控制: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数据成员可以做默认实参。

个人意见,有不对的地方欢迎指出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: