1 函数(声明与定义中的)修饰符
函数修饰符有const , (extern) , explicit , static, volatile , virtual , inline , 带括号的部分为普通函数特有的标识符,非类成员函数不可采用cv修饰符(const, volatile),explicit只可用于自定义类的构造函数的声明。
2.1 普通函数声明和定义修饰符标识
本小结中,主要描述非类成员函数的声明和定义时修饰符的默认标识和显示标识,可用修饰符只有extern, static
修饰符 (前置修饰)
函数 | extern | static |
非自定义类函数声明 | 跨文件函数的声明,跨文件时必须显示标识,非跨文件时的默认标识,可不显示标识 | 函数链接性限定在本文件中,且改变其存储性,必须显示标识 |
非自定义类函数定义 | 默认修饰符,可显示标识 | 可显示标识也可以不显示标识,修饰符特性主要在于声明 |
2.2 自定义类成员函数声明和定义修饰符标识
函数标识符作用
修饰符
作用
| const | explicit | static | volatile | virtual | inline |
作 用 | 不允许修改对象数据成员 | 构造函数实参到形参不允许隐式转换 | 静态函数,不属于?对象 | 编译器不对其做优化,用法与const类似,但存在区别 | 用于多态 | 内联成员函数,提高运行程度,显示标识后的实际作用还需根据编译器进行,?在每一个编译单元都需要定义,且所有的定义必须相同? |
修饰符
声明 和 定义
| const 后置 修饰 | explicit 前置 修饰 | static 前置 修饰 | volatile 后置 修饰 | virtual 前置 修饰 | inline 前置 修饰 |
声明 | 必须显示标识 | 仅且仅当构造函数声明可用 | 显示声明有效 | 同const 这部分还不明白 | 基类必须显示声明,子类默认附带该标识,但也可显示标识 | 可有可无,仅仅用于提高程序可读性http://blog.csdn. net/fengzizhuang /article/details/214 78603 |
定义 | 必须显示标识 |
| 不可显示标识 | 同const | 显示标识错误 | 自定义体外部定义时必须要显示标识;如果在内部定义时inline默认标识,显示标识无错 |
??其中virtual、volatile、static、inline、const修饰符重叠使用以及与构造函数、复制构造函数和析构函数的联合使用,其中有些修饰是无意义的但是没有错误,但是有些修饰是不允许的,至于其中的内涵原因目前还不清楚