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的基本瞭解。