C++進階--const和函式(const and functions)
阿新 • • 發佈:2018-12-23
// const和函式一起使用的情況 class Dog { int age; string name; public: Dog() { age = 3; name = "dummy"; } // 引數為const,不能被修改 void setAge(const int& a) { age = a; } // 實參是常量時,呼叫此函式 void setAge(int& a) { age = a; } // 實參不是常量時,呼叫此函式 void setAge(const int a) { age = a; } // 值傳遞使用const沒有意義 // 返回值為const,不能被修改 const string& getName() {return name;} const int getAge() //值傳遞const沒有意義 // const成員函式,成員資料不能被修改 void printDogName() const { cout << name << "const" << endl; } // 物件是常量時,呼叫此函式 void printDogName() { cout << getName() << " non-const" << endl; } // 物件不是常量時,呼叫此函式 }; int main() { // 常量和非常量的轉換 // const_static去除變數的const屬性 const Dog d2(8); d2.printDogName(); // const printDogName() const_cast<Dog&>(d2).printDogName() // non-const printDogName() // 使用static_cast加上const屬性 Dog d(9); d.printDogName(); // invoke non-const printDogName() static_cast<const Dog&>(d).printDogName(); // invoke const printDogName() }