c++继承关系

c++

  • 继承父

#include <iostream>
using namespace std;

class Animal{
public:
string className;
string name;
int age;
int sex;
void eat(){
std::cout<<"当前在吃饭的是:"<<this->name<<std::endl;
}
void play(){
std::cout<<"当前在玩耍的是:"<<this->name<<std::endl;
}
};
class Tiger:public Animal{
public:
void bark(){
std::cout<<"当前在吼叫的是:"<<this->name<<std::endl;
}
};
int main(){
Animal cat = Animal();
Tiger tiger = Tiger();

cat.name = "小猫咪";
cat.age = 1;
cat.eat();
cat.play();

tiger.name = "泰哥";
tiger.age = 20;
tiger.bark();
tiger.eat();
tiger.play();
return 0;
}
  • 派生类可以继承所有的基类方法
  • 构造函数,析构函数、拷贝构造函数
  • 基类的重载运算符
  • 基类的友元函数
  • 继承类型来说
  • 公有类型
  • 同一个类可访问
  • 派生类可访问
  • 外部类可访问
  • 保护类型
  • 同一个类可访问
  • 派生类可访问
  • 外部类不可访问
  • -私有类型
  • 同一个类可访问
  • 派生类不可访问
  • 外部类不可访问
  • 继承方式
  • 公有继承方式
  • 公有类型,保护类型不变,私有类型可以通过方法成员调用
  • 保护继承
  • 公有和保护成员全体变为派生类的保护成员
  • 私有继承
  • 私有基类,基类的所有公有和保护成员都成为派生类的私有成员

多继承方式

#include <iostream>
using namespace std;

class Animal{
public:
string className;
string name;
int age;
int sex;
void eat(){
std::cout<<"当前在吃饭的是:"<<this->name<<std::endl;
}
void play(){
std::cout<<"当前在玩耍的是:"<<this->name<<std::endl;
}

private:
int num_kids = 5;
};
class BuRuAnimal{
public:
void setName(){
cout<<"ok"<<endl;

}


};


class Tiger:public BuRuAnimal,virtual public Animal{
public:
void bark(){
std::cout<<"当前在吼叫的是:"<< this->name<<std::endl;
}
};
int main(){
Animal cat = Animal();
Tiger tiger = Tiger();

cat.name = "小猫咪";
cat.age = 1;
cat.eat();
cat.play();

tiger.name = "泰哥";
tiger.age = 20;
tiger.bark();
tiger.eat();
tiger.play();
return 0;
}