Computer >> Máy Tính >  >> Lập trình >> C ++

Từ khóa có thể thay đổi trong C ++?

Ở đây chúng ta sẽ xem từ khóa có thể thay đổi trong C ++ là gì. Có thể thay đổi là một trong những lớp lưu trữ trong C ++. Thành viên dữ liệu có thể thay đổi là loại thành viên, có thể được thay đổi luôn luôn. Ngay cả khi đối tượng là kiểu const. Khi chúng ta chỉ cần một thành viên là biến và thành viên khác là hằng số, thì chúng ta có thể làm cho chúng có thể thay đổi được. Hãy để chúng tôi xem một ví dụ để có được ý tưởng.

Ví dụ

#include <iostream>
using namespace std;
class MyClass{
   int x;
   mutable int y;
   public:
   MyClass(int x=0, int y=0){
      this->x = x;
      this->y = y;
   }
   void setx(int x=0){
      this->x = x;
   }
   void sety(int y=0) const { //member function is constant, but data will be changed
      this->y = y;
   }
   void display() const{
      cout<<endl<<"(x: "<<x<<" y: "<<y << ")"<<endl;
   }
};
int main(){
   const MyClass s(15,25); // A const object
   cout<<endl <<"Before Change: ";
   s.display();
   s.setx(150);
   s.sety(250);
   cout<<endl<<"After Change: ";
   s.display();
}

Đầu ra

[Error] passing 'const MyClass' as 'this' argument of 'void MyClass::setx(int)' discards qualifiers [-fpermissive]

Nếu chúng ta chạy chương trình bằng cách bỏ dòng [s.setx (150); ], sau đó -

Đầu ra

Before Change:
(x: 15 y: 25)
After Change:
(x: 15 y: 250)