直接开冲 奥力给!!! O(∩_∩)O 以下内容 皆为 我用自己的语言表述 大家可以多多提意见
1.继承的方式
public:以公有方式继承父类,则父类中若有public属性成员则在子类中依然是public属性,其他属性不变.
该继承方式的子类在子类中除了不能访问父类中的private属性,其他的属性成员都可以访问.在子类外只能访问子类
中的public属性和父类的public属性.
protected:以保护方式继承父类,则父类中的public成员在子类中变为protect属性,只能在子类中
访问父类的public和protected成员.,在子类外只能访问子类的public属性,无法通过子类去访问父类的public属性.
private:以私有方式继承父类,则父类中的所有属性成员在子类中皆为私有,在子类中都不能访问父类.
如果缺省继承方式,则默认为私有继承
2.子类成员的构造和初始化
#include <iostream>
using namespace std;
class A{
public:
int a;
public:
A(int a=0):a(a){
cout << "A()" << endl;
}
void show(){
cout << a << endl;
}
};
class B{
public:
int b;
public:
B(int b=0):b(b){
cout << "B()" << endl;
}
void show(){
cout << b << endl;
}
};
class C:public A,public B{
public:
int c;
public:
C(int a=1,int b=1,int c=1):A(a),B(b),c(c){
cout << "C()" << endl;
}
};
int main(){
C s(2,3,4);
cout << s.c << endl;
return 0;
}
以下为输出结果:
A() B() C() 4
3. 基类子对象
概念:每个子类中都包含着父类的对象成员.
意义:那么意味着可以通过子类来获取父类中的信息.
#include <iostream>
using namespace std;
class A{
private:
int a1;
public:
int a;
public:
A(int a=0,int a1 = 1):a(a),a1(a1){
cout << "A()" << endl;
}
void show(){
cout << a << endl;
cout << a1 << endl;
}
};
class B{
public:
int b;
public:
B(int b=0):b(b){
cout << "B()" << endl;
}
void show(){
cout << b << endl;
}
};
class C:public A,public B{
public:
int c;
public:
C(int a=1,int a1 = 1,int b=1,int c=1):A(a,a1),B(b),c(c){
cout << "C()" << endl;
}
void show(){
cout << c << endl;
}
};
int main(){
C s(2,3,4,5);
A& sa = s;
B& sb = s;
sa.show();
sb.show();
cout << &sa << endl;
cout << &sb << endl;
return 0;
}
输出结果为:
A() B() C() 2 3 4 0x61fe00 0x61fe08
|