下面是对 "C++ 中const对象与const成员函数的实例详解" 的详细讲解:
什么是 const 对象?
- const 对象:指一旦被初始化后就不能被修改的对象。
- const 对象必须在创建时进行初始化,因为一旦创建后就不能再改变它的值。
- 访问一个 const 对象的地址是完全合法的。
普通的 const 对象
看以下代码示例:
#include <iostream>
using namespace std;
class Box {
double length;
public:
Box(double l) {
cout << "Constructor called" << endl;
length = l;
}
double getLength() {
return length;
}
};
int main() {
const Box box(10.0);
cout << "Length of box : " << box.getLength() << endl;
return 0;
}
输出结果为:
Constructor called
Length of box : 10
- 程序中的
box
对象被声明为 const。 - 在初始化
box
对象时,使用了参数为10.0
的构造函数。 box.getLength()
函数可以访问const
对象的成员函数。成员函数在内部不会修改成员变量。
const 成员函数
- 声明为
const
的成员函数被称为 const 成员函数。 - const 成员函数不可以修改类的成员变量,除非成员变量被声明为 mutable。
- const 成员函数可以访问非 const 成员函数和 const 成员函数。
接下来的代码示例演示了 const 成员函数:
#include <iostream>
using namespace std;
class Box {
double length;
public:
Box(double l) {
cout << "Constructor called" << endl;
length = l;
}
double getLength() const {
return length;
}
};
int main() {
const Box box(10.0);
cout << "Length of box : " << box.getLength() << endl;
return 0;
}
输出结果为:
Constructor called
Length of box : 10
- 在上面的例子中,
getLength
函数被声明为const
,因此不能修改类的成员变量。 - 在定义一个
const
成员函数时,需要在函数声明和定义中使用const
关键字。
mutable 成员变量
- 当一个成员变量被声明为
mutable
时,它可以在 const 函数中被修改。 - mutable 成员变量会在整个类中保持可变状态。
以下是代码示例:
#include <iostream>
using namespace std;
class Box {
mutable double length;
public:
Box(double l) {
cout << "Constructor called" << endl;
length = l;
}
void setLength(double len) const {
length = len;
}
double getLength() const {
return length;
}
};
int main() {
const Box box(10.0);
cout << "Length of box : " << box.getLength() << endl;
box.setLength(20.0);
cout << "Length of box : " << box.getLength() << endl;
return 0;
}
输出结果为:
Constructor called
Length of box : 10
Length of box : 20
length
是一个 mutable 成员变量。box.setLength(20.0)
调用const
函数并改变了length
的值。getLength()
函数在 const 成员函数中返回length
。
以上就是 C++ 中const对象与const成员函数的实例详解攻略,祝你学习愉快。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ 中const对象与const成员函数的实例详解 - Python技术站