La quinta semana de aprendizaje: conceptos de herencia y derivación

Herencia: A como clase base, B como clase derivada de A, se llama B hereda A y A deriva B

  1. La clase derivada tiene todas las funciones miembro y variables miembro de la clase base
  2. Las clases derivadas se pueden obtener modificando y expandiendo la clase base
  3. Una vez que se define la clase derivada, se puede usar de forma independiente sin depender de la clase base
  4. La función miembro de la clase derivada hermano no puede acceder al privado de la clase base

Escritura de clase derivada:
class B:public A{...}

Espacio de memoria para objetos derivados

Volumen del objeto derivado = volumen del objeto base + volumen de la variable miembro del propio
objeto derivado (el objeto derivado incluye el objeto base)

#include<iostream>
#include<string>
using namespace std;
class Student{
    
    
	private:
		string name;
		string ID;
		int age;
		char gender;
	public:
		void printfinfo();
		void setinfo(const string& s1,const string& s2,int n, char ch);
		string getname(){
    
    return name;}
};

class CStudent:public Student
{
    
    
	private:
		string department;
	public:
		void printfinfo();
		void setinfo(const string& s1,const string& s2,int n, char ch,const string& s3);
		void qualified(){
    
    
			cout<<"qualified for baoyan\n";
		}
};

void Student::printfinfo()
{
    
    
	cout<<name<<"("<<ID<<", "<<gender<<")"<<" is "<<age<<" years old ";
}

void Student::setinfo(const string& s1,const string& s2,int n,char ch)
{
    
    
	name = s1;
	ID =s2;
	age = n;
	gender = ch;
}

void CStudent::printfinfo()
{
    
    
	Student::printfinfo();
	cout<<", he is in "<<department<<" department";
}

void CStudent::setinfo(const string& s1,const string& s2,int n,char ch,const string& s3)
{
    
    
	Student::setinfo(s1,s2,n,ch);
	department = s3;
}

int main()
{
    
    
	CStudent s1;
	s1.setinfo("Jeff","2018224042",20,'M',"BME");
	s1.printfinfo();cout<<endl;
	cout<<s1.getname()<<" is ";
	s1.qualified();
}
  1. Las clases derivadas también escriben funciones con el mismo nombre y llaman a las funciones de la clase base con el mismo nombre en las funciones del mismo nombre, lo que se denomina cobertura.

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/ZmJ6666/article/details/108577618
Recomendado
Clasificación