为什么输出*q就可以打印出被保护的对象成员?
protected的对象成员不是只能用成员函数调用?
protected的对象成员不是只能用成员函数调用?
2019-05-07
就算改成private都可以,这个老师用的指针p不是Circle类的指针,而是int指针,所以不受访问限定符的限定。
你可以用下面的代码来看,p1是Circle类的指针,p2是int指针。
class Circle : public Shape{
public:
Circle(int radius);
~Circle();
private:
int m_iR;
};
int main() {
Circle circle(200);
cout << "sizeof(circle) = " << sizeof(circle) << endl;
// Circle指针,无法访问
Circle *p1 = &circle;
p1->m_iR;
// int指针,不受private限定符限制
int *p2 = (int *)&circle;
cout << "p2 = " << p2 << endl;
cout << "(unsigned int)(*q) = " << (unsigned int)(*p2) << endl;
}举报