说一下私有成员,公有成员,保护成员的性质:
1.公有成员在类外可以通过类直接访问,保护成员和私有成员都不能直接访问
#include "iostream"
using namespace std;
class a{
public:
int a_public_element;
private:
int a_private_element;
protected:
int a_protected_element;
};
int main(){
a ta;
ta.a_public_element=1;
ta.a_protected_element=1;
ta.a_private_element=1;
}
2.某个类的私有对象,只能通过该类的方法对私有对象进行访问,任何派生类不管以什么方式继承都不能访问该基类的私有成员.
#include "iostream"
using namespace std;
class a{
public:
int a_public_element;
private:
int a_private_element;
protected:
int a_protected_element;
};
class b:public a{
void bf(){
a_private_element=1;
}
};
class c:private a{
void cf(){
a_private_element=1;
}
};
class d:protected a{
void df(){
a_private_element=1;
}
};
int main(){
;
}
1.公有继承
如果一个派生类公有继承基类的话,基类公有和保护成员的性质在派生类中保持不变(公有成员依然公有,保护成员依然保护)
2.保护继承
如果一个派生类保护继承基类的话,派生类中公有成员和保护成员都变成保护成员,所以之前的公有成员在类外不能直接访问了.
#include "iostream"
using namespace std;
class a{
public:
int a_public_element;
private:
int a_private_element;
protected:
int a_protected_element;
};
class d:protected a{
;
};
int main(){
a ta;
ta.a_public_element=1;
d td;
td.a_public_element=2;
}
3.私有继承
私有继承和保护继承类似,派生类私有继承基类后,原来的公有成员,保护成员都变成派生类中的私有成员.
需要注意一下:对于类中的静态变量,在类外可以直接访问和使用,因为静态类成员是单独存储的,而不是对象的组成部分.