C ++ relacionados herencia notas de estudio (a)

Para hacer frente a las necesidades de los diferentes miembros de la misma clase requiere menos datos de codificación, se embarcó en un estudio siguiendo el
compromiso y derivados de este camino de no retorno , de acuerdo con la clase principal se divide en sub-categorías y subcategorías puede ser reenviada de la clase padre
que lleva un cierto variables miembro correspondiente a reducir la cantidad de código, sólo para heredar la clase padre de su función debido a las disposiciones de la clase
que no son estáticas propiedad de miembro pertenece realmente a un objeto en particular, propiedades y funciones son miembros estáticos de
inter-como el compartir, esta vez para conseguir que el niño ocupado memoria (presumiblemente para llamar), se puede conseguir que el niño
el número de bytes ocupado por la clase de acciones es de 1:

#include<iostream>
using namespace std;
class Parent
{
public:
	void fun()
	{
		cout << " fun is running";
	}
};
class Son :public Parent
{

};
int main()
{
	cout << sizeof(Son);
	return 0;
}

Puede utilizar las herramientas de desarrollo VS para buscar herencia.

一,打开VS2019 Developer Command Prompt
二,使用cd+文件所在路径来进入cpp所在位置
三,输入cl /d1 reportSingleClassLayout子类名 cpp名 来查看子类的继承的内容

Para aprender directamente de los hereda de la clase base subyacentes lo que la clase padre, fácil de entender el
contenido de aprendizaje, de acuerdo con hereda la sintaxis subclase de la clase padre: la clase padre para heredar la herencia de clases de padres: un nombre de subclase
en la herencia pública, herencia privada, la herencia protegida Cabe señalar que cuando los datos de la clase padre se
no se hereda cuando los datos privados, o hay realmente sólo heredaron compilador de ocultar los datos
, porque cuando el código para leer:

#include<iostream>
using namespace std;
class Parent
{
public:
	int number;
	void fun()
	{
		cout << " fun is running";
	}
private:int height;
protected:int weight;
};
class Son :public Parent
{

};
int main()
{
	cout << sizeof(Son);
	return 0;
}

会发现按照父类中私有数据不会被子类继承的方式输出结果应该是8而
不是12,一个int占4个字节所以子类的确是有继承父类中的私有数据
只是编译器隐藏了该值,如果想在类外访问该私有数据可以通过友元来
获取私有数据,结合开发者工具更具说服力。

总不能是开发者工具欺骗使用者吧(手动狗头),说到继承方式除了公有
继承不会改变父类中的数据类型该是公有就是公有,保护就是保护,其
余根据继承方式保护继承中父类中的除私有数据外继承到子类中变为
保护形式,私有继承将父类中除私有数据外继承到子类中变为私有数据
继承中构造和析构顺序:先构造父类,再构造子类,先析构子类再析构父
类,可以生动形象地说明这一顺序的是先有父亲后有儿子,然后白发人送
黑发人(误)。
继承中会涉及到子类和父类存在相同的成员属性和成员行为的情况。

#include<iostream>
using namespace std;
class Parent
{
public:
	Parent() 
	{
		number = 6;
	}
	int number;
};
class Son :public Parent
{
public:
	Son()
	{
		number = 7;
	}
	int number;
};
int main()
{
	Son son;
	cout << son.number;
	return 0;
}

针对如上代码两个类均有默认构造函数,在创建对象的时候就会调用默
认构造函数,此时直接输出的是son对象中number是7,如果想访问父类
相同成员属性中的数据可以通过添加作用域符号来访问。
cout << son.Parent::number;

想要调用父类中的成员函数也是如此添加作用域符号来进行访问,也说
不应该涉及到继承时候整几个成员属性相同的情况。
C++中还有多继承一个子类可以有多个父类(大逆不道,狗头)。
其语法为子类:继承方式 父类,继承方式 父类,......来多继承不过这
样就会大大增加不同类中相同成员属性的碰撞,所以还是不用的好像
C++--(java)就原则上不允许多继承。

Supongo que te gusta

Origin www.cnblogs.com/pekkasuper/p/12613424.html
Recomendado
Clasificación