美文网首页
函数后面加const修饰

函数后面加const修饰

作者: 雨幻逐光 | 来源:发表于2018-10-10 15:26 被阅读0次

我们经常见到一些函数后面带有关键字 const 的修饰。那么 const 在这里表示什么意思呢?
其实这个 const 的是对函数的一个限定,使其无法修改类内的数据成员。const告诉别人这个函数不会改变对象的状态。
声明一个函数用 const 关键字来说明这个函数是一个只读函数(read only method),即不会修改任何的数据成员也就是不会改变该对象的状态。该类函数的声明和定义时都要加上 const 关键字。
任何不会修改数据成员的函数我们都应该声明为 const 类型。如果我们在编写 const 函数时不小心修改了数据成员,或者调用了其他非 const 成员函数(即会修改数据成员的函数),编译器将会报错。这无疑让我们编写的代码更加的健壮。看如下两端代码:
错误的写法:

#include <iostream>
using namespace std;
class Person
{
public:
    Person(int age);
    void setAge(int age);
    int getAge() const;
private:
    int age;
};

Person::Person(int age){
    this->age = age;
}

void Person::setAge(int age){
    this->age = age;
}

int Person::getAge() const{
    this->age = 23;      // wrong: want to modify data member, the compiler will report error
    return this->age;
}
int main(){
    Person person(13);
    cout << person.getAge() << endl;
    person.setAge(23);
    cout << person.getAge() << endl;
}

编译器所报错误:

Cannot assign to non-static data member within const member function 'getAge'

正确的写法:

#include <iostream>
using namespace std;
class Person
{
public:
    Person(int age);
    void setAge(int age);
    int getAge() const;
private:
    int age;
};

Person::Person(int age){
    this->age = age;
}

void Person::setAge(int age){
    this->age = age;
}

int Person::getAge() const{
    return this->age;
}

int main(){
    Person person(13);
    cout << person.getAge() << endl;
    person.setAge(23);
    cout << person.getAge() << endl;
    return 0;
}

运行结果:

13
23
Program ended with exit code: 0

相关文章

  • 函数后面加const修饰

    我们经常见到一些函数后面带有关键字 const 的修饰。那么 const 在这里表示什么意思呢?其实这个 cons...

  • C++中对Const用法的总结

    1、C++函数声明时在后面加const的作用:非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编...

  • C++的const复习

    复习:如何访问静态成员 复习: const 修饰函数参数 复习:const 修饰成员函数(const的作用:说明其...

  • 19.请说出const与#define 相比,有何优点?

    Const作用:定义常量、修饰函数参数、修饰函数返回值三个作用。被Const修饰的东西都受到强制保护,可以预防意外...

  • c++面试题集锦

    一,const的作用 1,定义只读变量 即常量2,修饰函数的参数和返回值3,修饰类的成员函数,被const修饰的成...

  • 【C++】C++学习笔记之十八:const

    const member function const 放在成员函数名的后面,成员函数体的前面----const ...

  • C语言-const指针

    const 指针 在普通指针类型前面,加上const修饰 例如: const 指针:区别 加不加const,有什么...

  • C++ const用法

    一 修饰类 C++中const修饰类主要包括3个部分:数据成员,成员函数,对象。 数据成员const 修饰类的成员...

  • C++ const对象与函数

    1.const 修饰类的成员变量,表示成员常量,不能被修改。 2.const修饰函数承诺在本函数内部不会修改类内的...

  • const、volatile和restrict的作用和用法总结

    const const(constant)关键字可修饰变量、函数参数、返回值或函数体。 定义只读变量。 限制函数参...

网友评论

      本文标题:函数后面加const修饰

      本文链接:https://www.haomeiwen.com/subject/irnpaftx.html