1、类成员访问级别有三种:public、private、protected。
2、继承方式的不同会改变继承成员的访问属性:
public继承:父类成员在子类中保持原有访问级别;
private继承:父类成员在子类中变为private成员;
protected继承:
(1)父类中public成员会变成protected;
(2)父类中protected成员仍然为protected;
(3)父类中private成员仍然为private;
3、private成员在子类中依然存在,但是却无法访问到。不论种方式继承基类,派生类都不能直接使用基类的私有成员 。
举例代码:
//类的继承方式对子类对外访问属性影响
#include <cstdlib>
#include <iostream>
using namespace std;
class A
{
private:
int a;
protected:
int b;
public:
int c;
A()
{
a = 0;
b = 0;
c = 0;
}
void set(int a, int b, int c)
{
this->a = a;
this->b = b;
this->c = c;
}
};
class B : public A
{
public:
void print()
{
//cout<<"a = "<<a; //报错
cout<<"b = "<<b;
cout<<"c = "<<endl;
}
};
class C : protected A
{
public:
void print()
{
//cout<<"a = "<<a; //报错
cout<<"b = "<<b;
cout<<"c = "<<endl;
}
};
class D : private A
{
public:
void print()
{
//cout<<"a = "<<a; //报错
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}
};
int main(int argc, char *argv[])
{
A aa;
B bb;
C cc;
D dd;
aa.c = 100;
bb.c = 100;
//cc.c = 100; //类的外部是什么含义?
//dd.c = 100;
aa.set(1, 2, 3);
bb.set(10, 20, 30);
//cc.set(40, 50, 60);
//dd.set(70, 80, 90);
bb.print();
cc.print();
dd.print();
system("pause");
return 0;
}
873

被折叠的 条评论
为什么被折叠?



