常函数
话不多说先上代码:
#include <iostream>
using namespace std;
class Example
{
public:
int a;
Example()//声明常对象必须写构造函数
{
;
}
void show() const //构造与析构不能是常函数
{
//a = 1; 常函数只能使用,不能修改数据成员
int b = 2;
} //this指针的形式为const Example *
};
int main()
{
const Example c1; //常对象
c1.show();
return 0;
}
总之,常函数不能修改数据成员,常对象只能调用常函数。
如果常函数中有this指针,其类型是const Example *。
static成员使用方法
静态成员只能在类外初始化,无法通过构造函数初始化,但可以在类内对其进行赋值。
#include <iostream>
using namespace std;
class Example
{
public:
static int b;
Example()
{
b = 3; //可赋值
cout << b << endl;
}
};
int Example::b = 1; //类外初始化
int main()
{
cout << Example::b << endl; //调用方法1
Example c1; //可以在构造函数中对其赋值
c1.b = 2;
cout << c1.b << endl; //调用方法2
return 0;
}
代码结果如下:
只有静态常量整型(包括char)变量可以在类内初始化。
对于static函数成员,调用方法与静态变量成员相同,注意事项:
- 不能用this指针,因为静态成员所处空间与对象无关。
- 静态成员函数只能使用静态成员变量,不能使用普通成员(包括函数)。
关于static成员,类被声明即有自己的空间,与对象创建与否无关。