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

c++成员函数之static和const作用

2017-01-06 15:15 363 查看
一,静态成员函数 

1.静态成员函数的地址(内存中真正地址)可用普通函数指针储存,而普通成员函数地址需要用 类成员函数指针来储存。举例如下: 
class base{ 
static int func1(); 
int func2(); 
}; 

int (*pf1)()=&base::func1;//普通的函数指针 
int (base::*pf2)()=&base::func2;//成员函数指针 

2.静态成员函数不可以调用类的非静态成员。因为静态成员函数不含this指针。 

3.静态成员函数不可以同时声明为 virtual、const、volatile函数。举例如下: 
class base{ 
virtual static void func1();//错误 
static void func2() const;//错误 
static void func3() volatile;//错误 
}; 

4.最后要说的一点是,静态成员是可以独立访问的,也就是说,无须创建任何对象实例就可以访问。

列如:

class base{ 
static int func1(); 
int func2(); 
}; 

base::func1()    //是正确的

base::func2()    //是错误的

二、成员函数后面加const

1、非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误)
2、表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中,
    任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用);
3、唯一的例外是对于mutable修饰的成员。
    加了const的成员函数可以被非const对象和const对象调用
    但不加const的成员函数只能被非const对象调用

 

char getData() const{

        return this->letter;


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: