淺析成員函數和常成員函數的挪用。本站提示廣大學習愛好者:(淺析成員函數和常成員函數的挪用)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析成員函數和常成員函數的挪用正文
在Coordinate類中,有一個Display()成員函數和一個Display() const常成員函數,代碼以下
class Coordinate{ public: Coordinate(int x,int y); void Display() const; void Display(); private: int m_iX; int m_iY; };
#include <iostream> #include "Coordinate.h" using namespace std; Coordinate::Coordinate(int x, int y){ this->m_iX = x; this->m_iY = y; } void Coordinate::Display() const{ cout << "Display() const" << endl; } void Coordinate::Display() { cout << "Display()" << endl; }
Display()成員函數和一個Display() const常成員函數是互為重載的,那末假如我們直接像上面如許挪用該辦法,會挪用的是哪一個呢?
#include <iostream> #include "Coordinate.h" using namespace std; int main(){ Coordinate coor(1, 3); coor.Display(); system("pause"); return 0; }
那末運轉下法式來看看成果
法式挪用的是沒有效const潤飾的成員的函數,不是說Display()成員函數和一個Display() const常成員函數是互為重載麼,那末我們要若何能力讓法式挪用const潤飾的成員函數呢?
其實很簡略,只須要在聲明的時刻加上const就行。
假如在類中假如只要一個常成員函數的話,聲明的時刻可以不加上const也是可以挪用常成員函數的,
class Coordinate{ public: Coordinate(int x,int y); void Display() const; private: int m_iX; int m_iY; };
#include <iostream> #include "Coordinate.h" using namespace std; Coordinate::Coordinate(int x, int y){ this->m_iX = x; this->m_iY = y; } void Coordinate::Display() const{ cout << "Display() const" << endl; }
#include <iostream> #include "Coordinate.h" using namespace std; int main(){ Coordinate coor(1, 3); coor.Display(); system("pause"); return 0; }
以上這篇淺析成員函數和常成員函數的挪用就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。