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

本文详细介绍了在C++中如何正确使用const成员变量,并通过具体示例展示了构造函数及拷贝构造函数中如何初始化const成员变量。文章还强调了在包含const成员变量时必须使用初始化列表的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
	}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值