求教关于继承的问题
本帖最后由 iverain 于 2013-08-13 11:21:21 编辑 教材上说
“派生类不能访问其基类的private成员,否则会破坏基类的封装性。但是,派生类能够访问基类的public成员和protected成员。基类中不应该让派生类通过继承而访问的成员要在基类中声明为private。派生类只能通过基类public和protected接口提供的访问函数访问基类的private成员”
我的问题是:
1. 上面说派生类能够访问基类的public和protected成员。派生类不是已经继承了基类的public和protected成员了吗,他能用自己的成员去访问基类吗?
2.
派生类不是已经继承了基类的public,protected和private属性吗,那是不是就意味着系统为派生类继承来的这些成员分配内存?还是说派生类中的基类部分不是新分配内存,而只是一个类似于指向基类成员的指针?不知道我有没有表述清楚问题。
换个具体的说法:
class a class b
{ {
public: public:
void setA(int); void setA(int);
int getA(); int getA();
private: int getAplus1();
int x; private:
} int x;
}
上面是我没有用继承的方法声明了两个类,那我用继承来声明b和直接声明b,b的内部结构是不是一样的?
继承 C++
[解决办法]
1. 派生类能够访问基类的public和protected成员 等价于 能用自己的成员中使用基类的public和protected成员
2.用继承来声明b和直接声明b,b的内部结构是一样的。继承只是语法上的,大部分是编译时期固定;除非涉及到虚函数等才存在运行时指针间接关系
[解决办法]