const修飾詞是constant的縮寫,這意味著被修飾的對象是不變的、不可修改的,以下有幾種修飾時機:
全域或區域變數在定義時若有被const修飾,都代表程式碼不能再對其值進行修改。
const int x = 10;
x = 20 // 此行會導致編譯錯誤
在函式定義時用const修飾其參數,即可避免該函式修改了參數的值。
void func(const int x) {
x = 20; // 此行會導致編譯錯誤
std::cout << "x = " << x << std::endl;
}
當const修飾了類別的函式成員,代表該函式不會修改類別中的其它成員。
class MyClass {
public:
int setX(int value) const { // const修飾函式成員
x = value; // 此行會導致編譯錯誤
}
private:
int x;
};
當const修飾了函式的類別指標型參數,代表該類別參數在函式中不能對自身成員進行修改。
class MyClass {
public:
int setX(int value) { // 移除掉const修飾詞
x = value;
}
void printX() const {
std::cout << "x = " << x << std::endl;
}
private:
int x;
};
void func(const MyClass *myClass) {
myClass->setX(100); // 此行會導致編譯錯誤
myClass->printX();
}
Last updated: