1、C++ 继承(子类和父类)
在C ++中,可以将属性和方法从一个类继承到另一个类。继承分为两类:
派生类(子类):从另一个类继承的类
基类(父类):从其继承的类
要从类继承,需要使用:
符号。
例如,
#include <iostream> using namespace std; class MyClass { // class public: // 访问修饰符 MyClass() { // 构造函数 cout << "Hello World!"; } }; int main() { MyClass myObj; // 创建MyClass的一个对象(会调用构造函数) return 0; }
2、C++ 多继承
上面的继承只是从一个基类继承,如果一个类有多个基类,这样的继承关系称为多继承。
语法:
class 派生类名: 访问控制符 基类名1,访问控制符 基类名2
{
数据成员和成员函数声明;
}
例如,
#include <iostream> using namespace std; //C++提供虚继承机制,防止类继承关系中成员访问的二义性。 //当类中出现virtual时,C++编译器会对象添加一个vptr指针,同时会产生一个虚函数表 class A { public: int x; //4 public: A() { cout << "A" << endl; } }; class B:virtual public A { int b; //4 public: B(int x) { this->x = 10; cout << "B" << endl; } }; class C :virtual public A { int c; //4 public: C(int x) { this->x = 20; cout << "C" << endl; } }; class D :public B,public C { int d; //4 public: D(int x):B(10),C(20) { this->x = 30; cout << "D" << endl; } }; int main() { cout << sizeof(A) << endl; //4 cout << sizeof(B) << endl; //12 cout << sizeof(C) << endl; //12 cout << sizeof(D) << endl; //24 return 0; }
3、继承的作用
子类可以重用父类的代码,避免重复编写。通过继承建立类之间的层次关系,体现现实世界中的“is-a”关系。不同的对象对同一消息可以产生不同的行为。继承为实现多态提供了基础。
#include <iostream> using namespace std; // 父类 Animal class Animal { public: void eat() { cout << "This animal eats food." << endl; } void sleep() { cout << "This animal sleeps." << endl; } }; // 子类 Dog 继承 Animal 类 class Dog : public Animal { public: void bark() { cout << "The dog barks." << endl; } }; // 子类 Cat 继承 Animal 类 class Cat : public Animal { public: void meow() { cout << "The cat meows." << endl; } }; int main() { Dog dog; dog.eat(); // 继承自 Animal 类 dog.bark(); // Dog 类自己的方法 Cat cat; cat.eat(); // 继承自 Animal 类 cat.meow(); // Cat 类自己的方法 return 0; }