C++ const 限定符的全面介绍(二)

简介: C++ const 限定符的全面介绍(二)

C++ const 限定符的全面介绍(一)https://developer.aliyun.com/article/1436961


3. const 应用到函数中

定义

函数参数、返回值或成员函数使用 const。


语法

void func(const type arg); // 参数是常量
const type func();         // 返回常量
type func() const;         // 常量成员函数


特点

保护函数参数和返回值,确保对象成员函数不修改对象状态。

作用

防止函数修改输入数据,保证成员函数不改变对象状态。

使用场景

当不希望函数更改数据或对象状态时。

注意事项

常量成员函数不能修改任何成员变量。


代码示例

#include <iostream>
using namespace std;

class MyClass {
public:
    MyClass(int val) : value(val) {}
    int getValue() const { return value; } // 常量成员函数

private:
    int value;
};

void printValue(const MyClass& obj) {
    cout << "Value: " << obj.getValue() << endl;
}

int main() {
    MyClass obj(10);
    printValue(obj);
    return 0;
}

运行结果

Value: 10

总结

确保数据和对象状态的安全性和稳定性。


4. const 在类中的用法

定义

在类定义中使用 const 修饰成员变量和成员函数。


语法

class MyClass {
public:
    MyClass(int val) : constMember(val) {}
    int getConstMember() const { return constMember; } // 常量成员函数
private:
    const int constMember; // 常量成员变量
};


特点

增强类封装,确保数据安全。

作用

定义不可变的成员变量和不改变对象状态的成员函数。


使用场景

设计不可变成员或保证成员函数的安全性。

注意事项

常量成员变量必须在构造函数初始化列表中初始化。

代码示例

#include <iostream>
using namespace std;

class MyClass {
public:
    MyClass(int v) : constMember(v) {}
    int getConstMember() const { return constMember; }

private:
    const int constMember;
};

int main() {
    MyClass obj(10);
    cout << "Const member: " << obj.getConstMember() << endl;
    return 0;
}

运行结果

Const member: 10

总结

在类中使用 const 提高成员变量和函数的安全性和稳定性。


5. const 修饰类对象


定义

定义不可改变的类对象。

语法

const ClassName object;


特点

常量对象只能调用其常量成员函数。

作用

确保对象状态不被更改。

使用场景

需要只读访问对象时。

注意事项

常量对象不能调用非常量成员函数。

代码示例

#include <iostream>
using namespace std;

class MyClass {
public:
    MyClass(int v) : value(v) {}
    int getValue() const { return value; }

private:
    int value;
};

int main() {
    const MyClass constObject(10);
    cout << "Const object value: " << constObject.getValue() << endl;
    return 0;
}


运行结果

Const object value: 10


总结

使用 const 修饰类对象可确保对象的完整性和不变性,适合只读场景。



目录
相关文章
|
4月前
|
C++
C++中的const指针与const引用
C++中的const指针与const引用
54 2
|
3月前
|
编译器 C++
【C++】类和对象④(类的默认成员函数:取地址及const取地址重载 )
本文探讨了C++中类的成员函数,特别是取地址及const取地址操作符重载,通常无需重载,但展示了如何自定义以适应特定需求。接着讨论了构造函数的重要性,尤其是使用初始化列表来高效地初始化类的成员,包括对象成员、引用和const成员。初始化列表确保在对象创建时正确赋值,并遵循特定的执行顺序。
|
4月前
|
编译器 C++
C++中的内联函数与const限定词的使用
C++中的内联函数与const限定词的使用
30 1
|
3月前
|
编译器 C++
【C++】:const成员,取地址及const取地址操作符重载
【C++】:const成员,取地址及const取地址操作符重载
28 0
|
4月前
|
编译器 C语言 C++
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)(下)
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)
19 1
|
3月前
|
存储 安全 编译器
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
27 0
|
4月前
|
编译器 C++
【C++】类与对象(运算符重载、const成员、取地址重载)
【C++】类与对象(运算符重载、const成员、取地址重载)
35 2
|
4月前
|
编译器 C++
【C++】【C++的常变量取地址问题(对比C的不同)】const修饰的常变量&volatile修饰用法详解(代码演示)
【C++】【C++的常变量取地址问题(对比C的不同)】const修饰的常变量&volatile修饰用法详解(代码演示)
|
4月前
|
编译器 C语言 C++
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)(中)
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)
22 0
|
4月前
|
编译器 C语言 C++
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)(上)
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)
19 0