static、const和static const

http://blog.csdn.net/rainkin1993/article/details/8068558

#include<iostream>
using namespace std;
class Year{
int y;
static const int InitY;

public:
Year()
{
    y=InitY;
};
int year() const
{
return y;
};//const成员函数
void add_year(int i)
{
    y=year()+i;
};
};
const int Year::InitY=1970;
int main()
{
    Year y1;
    
    Year* const py1=new Year();
    y1.add_year(1);
    py1->add_year(2);
    cout<<y1.year()<<','<<py1->year()<<endl;
    return 0;
}

如果加个const int bb的常数据成员,该怎样给它定义??

常数据成员,C++规定只能通过构造函数的成员初始化列表对常数据成员进行初始化。

如:

class Date{

Date(int y,int m,int d);

void showDate();

private:

 const int year;

 const int month;

 const int day;

};

Date::Date(int y,int m,int d):year(y),month(m),day(d)

{}//采用成员初始化列表,对数据成员赋初值。

如以下形式的构造函数是错误的:

Date::Date(int y,int m,int d)

{

 year=y; month=m;

 day=d;

}

C++规定只能通过构造函数的成员初始化列表对常数据成员进行初始化。

作者:wj704    出处:http://www.cnblogs.com/wj204/   
原文地址:https://www.cnblogs.com/wj204/p/3349173.html