const 成员函数

//const成员函数
class TestConstMemberFunc{
public:
	int x,y;
	int getX(){
		return x;
	}
	int getXconst() const{//加上cosnt,表明该函数不改变类内的变量,因而可以被cosnt的TestConstMemberFunc调用
		//x=1;Error//error: 'x' cannot be modified because it is being accessed through a const object
		return x;
	}
	int cmp(TestConstMemberFunc tc2) const{//tc2不是const的,因为是经过复制的
		tc2.x=1;
		return x>tc2.x;
	}

	int cmpConstReference(TestConstMemberFunc& tc2) const{//tc2也是const的,因为此处为reference
		tc2.x=1;
		return x>tc2.x;
	}
};

void test_constMemberFunc(){
	const TestConstMemberFunc t,t2;
	//t.getX();//error: cosnt TestConstMemberFunc不能调用非const的成员函数
	t.getXconst();
	t.cmp(t2);//ok
	//t.cmpConstReference(t2);//Error: cannot convert parameter 1 from 'const TestConstMemberFunc' to 'TestConstMemberFunc &'

}

你可能感兴趣的:(const 成员函数)