función miembro C ++ heredado por defecto (dos) --- sucesión

Después de las funciones miembro de clase por defecto Cheng Zhongji

En sucesión, las mismas funciones miembro defecto de la función miembro de la clase base por defecto y la clase general. Hay seis funciones miembro predeterminado.

Derivados valores predeterminados de función miembro de clase

1. Constructor

constructor de la clase derivada debe completar la construcción de la clase base , si no el constructor de la clase base no puede inicializar la pieza base.

class Base
{
public:
private:
	int _b;
};

class Derived : public Base
{
public:
	//调用默认的派生类构造函数时,
	//在初始化列表调用基类的构造函数
private:
	int _d;
};

int main()
{
	Derived D;//调用默认的派生类构造函数
	return 0;
}

Si el usuario de manera explícita se da constructor de la clase base (es decir, la clase base no tiene constructor defecto) en la clase derivada, las necesidades de los usuarios a explícitamente dadas por el constructor de la clase derivada, y la inicialización requerida para la lista de la clase derivada las llamadas correspondientes al constructor de la clase base.

class Base
{
public:
	Base(int b)//存在参数,或者不全缺省参数
		:_b(b)
	{
		cout << "Base" << endl;
	}
private:
	int _b;
};

class Derived : public Base
{
public:
	//调用默认的派生类构造函数时,(基类中构造函数参数必须存在,并且为不全缺省)
	//在初始化列表调用基类的构造函数
private:
	int _d;
};

int main()
{
	Derived d;//调用默认的派生类构造函数
	return 0;
}

La razón se debe a que: si no hay parámetro de paso explicito, a continuación, una llamada al constructor, los parámetros de la clase base no se pueden determinar, por lo que pidió a los parámetros de la demanda que pasa
una función de inicialización de objetos clase derivada primera llama a la llamada al constructor de la clase base en el constructor de la clase derivada.

2. destructor

destructor clase derivada llevará a cabo su destructor, a continuación, llama al destructor destructor de la parte de base al final de su destructor de la clase base.
Si no se da el destructor clase derivada, el valor por defecto será generar un destructor (simple), y el extremo destructor destructor predeterminado de la llamada la clase base en una clase derivada.

class Base
{
public:
private:
	int _b;
};

class Derived : public Base
{
public:
private:
	int _d;
};
int main()
{
	Derived d;
	//会析构派生类对象d,调用默认的派生类析构函数
}

constructor de copia

Derivado de clase (por defecto) constructor de copia debe llamar a la copia constructor de la clase base configurada para copiar el objeto.

Sobrecarga de operadores de asignación

operador = el mismo que el constructor de copia, necesidades operador de asignación para llamar a la sobrecarga de la clase base para completar.

Publicado 52 artículos originales · ganado elogios 26 · vistas 3416

Supongo que te gusta

Origin blog.csdn.net/weixin_43796685/article/details/103132841
Recomendado
Clasificación