注册 登录
编程论坛 C++教室

关于public继承的问题

zhiyajun11 发布于 2011-01-09 11:34, 652 次点击
public继承中,基类的私有成员不是不能被继承吗,那么,看下面的程序:
#include "iostream"
using namespace std;
class CA
{
private:
    int Age;
public:
    void SetAge(int age)
    {
        Age=age;
    }
    void print()
    {
        cout<<Age<<endl;
    }

};
class CB:public CA
{
    ;
} stu1;
void main()
{
    int age;
    cin>>age;
    stu1.SetAge(age);
    stu1.print();
}
这里却可以执行,但stu1.SetAge(age);stu1.print()都用到了基类的私有成员Age,但stu1却是类CB的对象,这是怎么回事,是不是我理解的不对?应该怎样理解基类的私有成员不被继承?
2 回复
#2
hust_sj2011-01-09 11:43
谁说私有成员不被继承?只是不能在子类中直接访问罢了,可以间接的通过基类的函数访问,如果你这样用:stu1.age = 20; 那就会编译出错


[ 本帖最后由 hust_sj 于 2011-1-9 11:44 编辑 ]
#3
li_danwang2011-01-09 16:11
私有成员只是不可以被类对象直接访问,可以间接的通过类对象的函数访问.  公有继承时候,基类私有成员在派生类里访问权限是私有的,所有可以使用成员函数访问
1