为什么这个关于C++派生类的小程序运行结果和书上不一样?

来源:百度知道 编辑:UC知道 时间:2024/06/05 19:32:33
程序如下:
#include <iostream.h>
#include <stdio.h>
class group_1
{
int a;
protected:
int b;
public:
void output1(void);
};
group_1 everyone;
class group_2:public group_1
{
int c;
public:
void output2(void);
};
group_2 a_few;
void main(void)
{
everyone.output1();
getchar();
}
void group_1::output1(void)
{
a=5;
b=10;
cout<<"a is "<<a<<" b is "<<b<<"\n";
a_few.output2();
}
void group_2::output2(void)
{
c=15;
b+=10;
cout<<"c is "<<c<<" b is "<<b<<"\n";
}
书说输出应该是:a is 5 b is 10
c is 15 b is 20
可为什么我运行之后的结果却是:a is 5 b is 10
c is 15 b is 10
为什么output2()没有改变b的值呢?b在group_1里明明是私有(private)成员啊!

#include <iostream.h>
#include <stdio.h>
class group_1
{
int a;
protected:
int b;
public:
void output1(void);
};

class group_2:public group_1
{
int c;
public:
void output2(int b);
};

group_2 a_few;
group_1 everyone;

void group_1::output1(void)
{
a=5;
b=10;
cout<<"a is "<<a<<" b is "<<b<<"\n";
a_few.output2(b);
}

void group_2::output2(int b)
{
c=15;
b+=10;
cout<<"c is "<<c<<" b is "<<b<<"\n";
}

void main(void)
{
everyone.output1();
getchar();
}

看看我把什么地方给你改了一下。因为在函数output2()中要用b的值,在被继承后,b就成