【Heremei】 C++ - 面向对象 - 关于类的访问修饰符以及继承的问题
今天和Lyk Dalao一起学习了C++面向对象的知识,我觉得有一部分需要明确一下。
类的成员访问修饰符有以下三种:public,protected,private
public:公有,在任何一个位置都可以访问的成员
protected:外部无法访问,该类和其子类可访问
private:外部和子类都无法访问,只有该类可以访问
在继承中的访问修饰符:
public会把父类的所有东西原样继承下来
protected会额外把public的都变成protected
private会把所有的都变成private
(所谓的变成,都是在子类中继承过来后访问修饰符的变化)
要注意的是,在父类中的private成员,子类继承时无论用什么标签都是无法访问的。
但不管是外部无法访问,还是子类里无法访问的情况,都可以通过调用父类里的公有函数间接访问私有(或受保护的)成员,比如以下代码:
#include<iostream>
#include<string>
using namespace std;
class object{
protected:
string a="Lyk AK IOI";
public:
void print(){
cout<<a;
}
};
int main(){
object obj;
obj.print();
return 0;
}
这是在外部通过调用print这个公有函数来访问a这个受保护的变量。
关于多继承:
多继承如果几个父类里有同名对象,会报错提示:ambiguous,就是你没说清楚是啥。但只要用::修饰就可以正确调用,比如:
#include<iostream>
#include<string>
using namespace std;
class zht{
public:
string a="Zht AK IOI";
};
class lyk{
public:
string a="Lyk AK IOI";
};
class lyd:public zht,public lyk{
public:
void zhtsay(){
cout<<zht::a<<endl;
}
void lyksay(){
cout<<lyk::a<<endl;
}
};
int main(){
lyd lyd1;
lyd1.lyksay();
lyd1.zhtsay();
return 0;
}
内容可以为空
浙公网安备 33010602011771号