int extern_a = 0;
class A
{
public:
const int cc;
int b;
int bb();
A(int a):b(a),cc(0){}
void aa()const;
};
int A::bb()
{
printf("who call me ?\n");
return b;
}
// const A 对象只能调用const成员函数
void A::aa()const
{
extern_a = b;//对,extern_a 没有const限制
// b = 1;//错误,this为常量指针
// this->b = 1;//错误,this为常量指针const A* const this
A* p = (A*)this;
p->b = 10000;//对,p没有const限制
p->bb();//对,*p::我不是const A,我骄傲
A q = (*this);
q.bb();//对的,q::我不是const A,我骄傲
// this->bb();//*this指向的const A ,我不敢调用非const函数。
(A(*this)).bb();//好吧,你赢了。。。我竟然无语
}
int main()
{
A classA(20);
const A classB(10);
printf("%d\n",classA.b);
classA.aa();
classA.bb();
int k = classB.b;//可以,只是不能调用非const成员函数
//A::bb();//不能这样子的啦,非静态成员函数的啦
printf("%d\n",extern_a);
printf("%X\n",&A::bb);
return 0;
}
C++类里面的const
最新推荐文章于 2024-01-22 22:05:57 发布