在 C 语言 和 C++ 中,const 用来修饰的常量表示是不可以被修改的,同时,const 在 C++ 中,还可以用来修饰 成员变量,当我们使用 const 修饰成员变量时,那么该成员变量只可以使用初始化列表的方式来进行初始化。
用 const 修饰成员变量,表示该成员变量不可以被修改,同时,使用 const 修饰的成员变量,只能使用初始化列表进行初始化。
Contractor(type1 var1): m_var1(var1)
{
private:
const type1 m_var1;
}
我们使用初始化列表的方式,用形参 var1 初始化了 const 成员变量 m_var1。
使用初始化列表初始化 const 成员变量
#include <iostream>
using namespace std;
class Student
{
public:
Student(string name, int age)
{
m_name = name;
m_age = age;
}
void sayHello()
{
cout << "I am " << m_name << " and i am " << m_age << " years old!" << endl;
}
private:
const string m_name;
int m_age;
};
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
Student stu("HaiCoder", 109);
stu.sayHello();
Student stu1("Jobs", 57);
stu1.sayHello();
return 0;
}
程序运行后,控制台输出如下:
我们定义了一个 const 成员变量 m_name,接着,我们在 构造函数 里面,通过赋值的方式,来给 const 成员变量设置值,程序报错,因为,const 成员变量不可以使用赋值的方式来设置值。
只能使用初始化列表的方式,来进行初始化,现在,我们修改程序如下:
#include <iostream>
using namespace std;
class Student
{
public:
Student(string name, int age):m_name(name), m_age(age)
{
}
void sayHello()
{
cout << "I am " << m_name << " and i am " << m_age << " years old!" << endl;
}
private:
const string m_name;
int m_age;
};
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
Student stu("HaiCoder", 110);
stu.sayHello();
Student stu1("JackMa", 61);
stu1.sayHello();
return 0;
}
程序运行后,控制台输出如下:
这次,我们在构造函数上面,使用了初始化列表的方式,初始化了 const 成员变量,这次程序没有报错,因此,const 成员变量只可以使用初始化列表的方式进行初始化。
const 在 C++ 中,还可以用来修饰成员变量,当我们使用 const 修饰成员变量时,那么该成员变量只可以使用初始化列表的方式来进行初始化。