La quinta semana de aprendizaje: las reglas de compatibilidad de copia de la herencia pública

  1. El objeto de la clase derivada se puede asignar al objeto de la clase base.
    base b; derived d; d=b;
    Los datos de los miembros que pertenecen al objeto de la clase derivada (la clase base también los tiene) se copian. Pero la clase base no puede asignar valores a la clase derivada, porque algunas clases base de la clase derivada pueden no tenerlo.
  2. Los objetos de clase derivados pueden inicializar referencias de clases base
    base& b = d
  3. La dirección del objeto de la clase derivada se puede asignar al puntero de la clase base
    base* pb = &d . Entonces pb se refiere a la parte pública del objeto de la clase derivada, por lo que algunas clases base de la clase derivada no tienen aquellas que no puede usar. Pero el puntero de la clase derivada no puede apuntar a la dirección del objeto de la clase base, porque no tiene parte de la clase derivada.
Clase base directa y clase base indirecta

A se deriva de B, B se deriva de C, C se deriva de D
A es la clase de base directa de B y A es la clase de base indirecta de C

Para declarar una clase derivada, simplemente enumere la clase base directa. Las clases derivadas heredarán automáticamente todas las clases base indirectas a lo largo de la jerarquía de clases. Entonces, la clase derivada incluye los miembros definidos por ella misma, todos los miembros de la clase base directa y la clase base indirecta.

#include<iostream>
using namespace std;
class son1
{
    
    
	public:
		son1(){
    
    cout<<"Son1 constructor called\n";}
		~son1(){
    
    cout<<"Son1 destructor called\n";}
 } ;
 
 class son2:public son1
 {
    
    
 	public:
 		son2():son1(){
    
    cout<<"Son2 constructor called\n";}
		~son2(){
    
    cout<<"Son2 destructor called\n";}
 };
 
 class son3:public son2
 {
    
    
 	public:
 		son3():son2(){
    
    cout<<"Son3 constructor called\n";}
		~son3(){
    
    cout<<"Son3 destructor called\n";}
 };
 
 int main()
 {
    
    
 	son3 s;
 }

Inserte la descripción de la imagen aquí

Supongo que te gusta

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