📜  C++中的const成员函数

📅  最后修改于: 2021-05-30 19:00:00             🧑  作者: Mango

像成员函数和成员函数参数一样,类的对象也可以声明为const 。声明为const的对象无法修改,因此只能调用const成员函数,因为这些函数确保不修改该对象。
可以通过在对象声明的前缀const关键字来创建const对象。任何试图更改const对象的数据成员的尝试都会导致编译时错误。
句法:

const Class_Name Object_name; 
  • 当函数声明为const时,可以在任何类型的对象,const对象以及非const对象上调用它。
  • 每当将对象声明为const时,都需要在声明时对其进行初始化。但是,只有在构造函数的帮助下,才可以在声明时进行对象初始化。

当在函数的声明中使用const关键字时,该函数将变为const。 const函数的想法是不允许它们修改调用它们的对象。建议实践中使尽可能多的函数常量化,以便避免意外更改对象。
以下是const函数的一个简单示例。

CPP
#include 
using namespace std;
 
class Test {
    int value;
 
public:
    Test(int v = 0) { value = v; }
 
    int getValue() const { return value; }
};
 
int main()
{
    Test t(20);
    cout << t.getValue();
    return 0;
}


CPP
#include
using namespace std;
 
class Test {
    int value;
public:
    Test(int v = 0) {value = v;}
    int getValue() {return value;}
};
 
int main() {
    const Test t;
    cout << t.getValue();
    return 0;
}


CPP
// Demonstration of constant object,
// show that constant object can only
// call const member function
#include
using namespace std;
class Demo
{
    int value;
    public:
    Demo(int v = 0) {value = v;}
    void showMessage()
    {
        cout<<"Hello World We are Tushar, "
        "Ramswarup, Nilesh and Subhash Inside"
        " showMessage() Function"<


输出:

20

当函数声明为const时,可以在任何类型的对象上调用它。非常量函数只能由非常量对象调用。
例如,以下程序有编译器错误。

CPP

#include
using namespace std;
 
class Test {
    int value;
public:
    Test(int v = 0) {value = v;}
    int getValue() {return value;}
};
 
int main() {
    const Test t;
    cout << t.getValue();
    return 0;
}

输出:

passing 'const Test' as 'this' argument of 'int 
Test::getValue()' discards qualifiers

让我们看另一个例子:

CPP

// Demonstration of constant object,
// show that constant object can only
// call const member function
#include
using namespace std;
class Demo
{
    int value;
    public:
    Demo(int v = 0) {value = v;}
    void showMessage()
    {
        cout<<"Hello World We are Tushar, "
        "Ramswarup, Nilesh and Subhash Inside"
        " showMessage() Function"<
OUTPUT : Hello world I'm Rancho Baba Inside display() Function
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”