函数修饰符标识

来源:互联网 发布:mysql怎么查看表空间 编辑:程序博客网 时间:2024/05/30 04:33

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默认标识,显示标识无错

 

??其中virtualvolatile、static、inline、const修饰符重叠使用以及与构造函数、复制构造函数和析构函数的联合使用,其中有些修饰是无意义的但是没有错误,但是有些修饰是不允许的,至于其中的内涵原因目前还不清楚