c++ const and static const
#include <iostream>
using namespace std;
class A
{
public:
A(int i);
void print();
const int &r;
private:
const int a;
static const int b; // 静态常数据成员
};
const int A::b = 10;
A::A(int i) : a(i), r(a) {}
void A::print()
{
cout << a << ": " << b << ": " << r << endl;
}
int main()
{
/*建立对象a1和a2,并以100和0作为初值,分别调用构造函数,通过构造函数的初始化列表给对象的常数据成员赋初值*/
A a1(100), a2(0);
a1.print();
a2.print();
return 0;
}
const int a
:常数据成员,每个对象都有自己的副本,必须在构造函数初始化列表中初始化static const int b
:静态常数据成员,所有对象共享同一个副本,需要在类外定义const int &r
:常引用成员,必须在构造函数初始化列表中绑定到某个对象
重要概念说明
- 常数据成员:每个对象都有独立的副本,必须通过初始化列表初始化
- 静态常数据成员:所有对象共享,值始终为10
- 常引用成员:r始终引用同一对象的成员a,所以r的值等于a的值