class Obj {
static int i, j;
public:
void f() const { cout << i++ << endl; }
void g() const { cout << j++ << endl; }
};
禁止函数修改类的成员变量
你这代码编译会报错的,f和g函数内部不可以修改成员变量i和j的值
回复到这个程度还是不足以采纳么......
常函数,这种函数里面不可以修改任何成员变量。你这两个函数都会编译报错,因为修改了i和j
class Obj {
/*static*/ int i, j;
public:
void f() const { cout << i++ << endl; }
void g() const { cout << j++ << endl; }
};
$ make
g++ -o classOverloadOperator1 classOverloadOperator1.cpp
classOverloadOperator1.cpp: In member function ‘void Obj::f() const’:
classOverloadOperator1.cpp:15:29: error: increment of member ‘Obj::i’ in read-only object
15 | void f() const { cout << i++ << endl; }
| ^
classOverloadOperator1.cpp: In member function ‘void Obj::g() const’:
classOverloadOperator1.cpp:16:29: error: increment of member ‘Obj::j’ in read-only object
16 | void g() const { cout << j++ << endl; }
| ^
classOverloadOperator1.cpp: At global scope:
classOverloadOperator1.cpp:20:5: error: ‘int Obj::i’ is not a static data member of ‘class Obj’
20 | int Obj::i = 10;
| ^~~
classOverloadOperator1.cpp:21:5: error: ‘int Obj::j’ is not a static data member of ‘class Obj’
21 | int Obj::j = 12;
| ^~~
make: *** [Makefile:9: classOverloadOperator1] Error 1