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;
}
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;
}
相关文章推荐
- C++里的静态(static)成员函数(不能用const的原因+static在c++中的第五种含义)
- C++:在成员函数后面放const的作用
- C++成员函数末尾const关键字的作用
- C++关于类成员函数在参数列表后加const的作用,以及使用条件
- c++ 类成员函数如果被static修饰,就不能为const修饰
- C++里的静态成员函数(不能用const的原因+static在c++中的第五种含义)(转)
- C++基础知识--static成员和const成员函数
- C++里的静态成员函数(不能用const的原因+static在c++中的第五种含义)
- c++中static成员函数和const成员函数特点
- c++ const 成员函数
- C++基础之const成员函数
- c++ const成员函数
- C++中的const成员函数和mutable关键字
- C++学习——const成员函数总结
- C++基础--const成员函数
- C++ 类的 静态成员 (static) 静态成员函数 Static
- c++中const对象与const成员函数
- c/c++笔试题——const类型的成员函数内部如何改变成员变量
- C++ 实现把非静态成员函数作为回调函数(非static)(转 待研究)
- c++ const 与成员函数