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

C++之类的const成员变量和成员函数2

2016-04-07 10:49 597 查看
C++之类的const成员变量和成员函数中,我们在Student类中,声明了一个const成员变量max_length,每一个类的对象都初始化为同一个固定的值。而我们通常需要每一个类的对象都要初始为不同的const成员变量。

以下面为例:const成员变量school,一旦初始化,就不可以更改了。具有const成员变量时,必须采用参数初始化列表写构造函数

class Student{
private:
string name;
int age;
float score;
//const成员变量
const string school;
//定义静态成员变量
static int number;
static float total;
public:
//Student(string name,int age,float score);
//有const成员变量,必须有参数初始化列表,
Student(string name,int age,float score,string s):name(name),age(age),score(score),school(s){
number++;
total += score;
}
//拷贝构造函数中,const成员变量的初始化,用初始化列表
Student(const Student & s):school(s.school){
this ->name = s.name;
this ->age = s.age;
this ->score = s.score;
number++;
total += score;
};
~Student();
void setSchool(string s);
void setName(string n);
string getName()const;
void setAge(int a);
int getAge() const;
void setScore(float s);
float getScore() const;
void say() const;
static float getAverage();

//运算符的重载
//bool operator== (const Student &s) const;
//用友元函数重载等于 运算符
friend bool operator== (const Student &s,const Student&s1);
};



我们看到构造函数必须使用参数初始化列表:

//有const成员变量,必须有参数初始化列表,
Student(string name,int age,float score,string s):name(name),age(age),score(score),school(s){
number++;
total += score;
}


//拷贝构造函数中,const成员变量的初始化,用初始化列表
Student(const Student & s):school(s.school){
this ->name = s.name;
this ->age = s.age;
this ->score = s.score;
number++;
total += score;
};


而不能采用以下的方式,进行

Student(string name,int age,float score,string s):name(name),age(age),score(score){
<span style="white-space:pre">		</span>school = s;
number++;
total += score;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: