淺談const的基本用法

  const能夠被用來定義常量,修飾函數的參數,修飾成員函數等。ios

  先從const的基本用法提及函數

一、例如:const int testInt = 10;spa

若是在之後的語句在進行testInt的複製操做例如:testInt = 20;則編譯會報錯誤。指針

二、指針類型的const的,由於const能夠放在「*」號的左邊和右邊,例如:code

char * test = "hello"對象

const  char* p = test或者char * const p = test再或者 char const * p = test;blog

這些又有什麼區別呢?編譯器

其實很簡單若是const在星號的左邊那被指的值就是常量,若是const在星號的右邊那麼指針就是常量,顯然若是有兩個const分別在星號的左右,那麼就代表被指的值和指針自己都是常量。io

三、const在成員函數的做用就是阻止成員函數更改對象的內容還能夠用來對const的對象和non-const對象進行不一樣的處理。編譯

class Test{
public:
    int num = 1;
    
    int Test::addNum() const
    {
        ++num;
        return num;
    }
}

這樣的話編譯器會報錯,num的值不能改變

#include <iostream>
#include <Windows.h>
using namespace std;
class Test{
public:
    int num = 1;
    
    int addNum() const
    {
        cout << "const" << endl;
        return num;
    }
    int addNum()
    {
        cout << "non-const" << endl;
        return num;
    }
};

int main()
{
    class Test test;
    test.addNum();
    class Test const ctest;
    ctest.addNum();
    system("pause");
}

test對象調用非const版本的函數,ctest對象調用const版本的函數。

以上就是我對const的基本瞭解。

相關文章
相關標籤/搜索