为什么输出*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; }
举报