RHZ'S BLOG | 个人分享

  • 首页
  • 笔记
  • 小日常
  • 音乐
  • 读书
  • 软件分享
YOLO
  1. 首页
  2. 笔记
  3. C/C++
  4. 正文

常量对象|C++

2022年9月9日 117点热度 0人点赞 0条评论

常量

const 是 constant 的缩写,本意是不变的,不易改变的意思。在 C++ 中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。

C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。

常量是一个固定值的表达式。程序运行时不能更改。

使用 const 关键字来定义一个常量变量。

const int x = 42;

所有常量变量在创建时都必须初始化。

常量对象|C++插图
const double var = 3.4

与内置数据类型一样,我们可以使用 const 关键字使类对象保持不变。

const MyClass obj;

所有 const 变量在创建时都必须被初始化。在类的情况下,这个初始化是通过构造函数完成的。

如果一个类没有使用参数化构造函数进行初始化,则必须提供一个公共的默认构造函数 - 如果没有提供公共的默认构造函数,则会发生编译错误。

一旦 const 类对象已经通过构造函数被初始化,就不能修改对象的成员变量。这包括直接更改公共成员变量和调用成员变量值的成员函数。

当你用 const 来声明一个对象的时候,你不能在对象的生命周期中改变它的数据成员。

const int  a = 7; 
int  b = a; // 正确
a = 8;       // 错误,不能改变
常量对象|C++插图1
Student st;
st.printAfe()

常量对象

只有非 const 对象可以调用非 const 函数。

常量对象不能调用常规函数。因此,对于一个常量的对象来说,你需要一个常量函数。

要将函数指定为 const 成员,const 关键字必须在函数原型之后,在其参数的右括号之外。

对于在类定义之外定义的 const 成员函数,必须在函数原型和定义上使用 const 关键字。

例如:

MyClass.h

class MyClass
{
  public:
    void myPrint() const;
};

MyClass.cpp

#include "MyClass.h"
#include <iostream>
using namespace std;

void MyClass::myPrint() const {
  cout <<"Hello Rhz"<<endl;
}

现在 myPrint() 函数是一个常量成员函数。因此,它可以被我们常量对象所调用:

int main() {
  const MyClass obj;
  obj.myPrint();
}
// 输出 "Hello rhz"
常量对象|C++插图2
class Student{
public:

void printAge() const;

}

尝试从常量对象调用常规函数会导致错误。

另外,当任何 const 成员函数试图改变成员变量或调用 非const 成员函数时,会产生编译器错误。

定义常量对象和函数可确保相应的数据成员不会被意外修改。

常量对象|C++插图3
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2022年9月9日

RHZ

即使单枪匹马,我亦勇敢无畏

点赞
< 上一篇
下一篇 >

文章评论

取消回复
归档
  • 2023年2月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年8月
  • 2021年7月

COPYRIGHT © 2022 RHZ的博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

渝ICP备2022008933号-1