Miembros estáticos y miembros no estáticos en C++


Variables miembro y funciones miembro

1 categoría

Las variables miembro y las funciones miembro se dividen en miembros estáticos y miembros no estáticos.

Diferencia e identificación:

  • Aquellos modificados con la palabra clave Static son miembros estáticos.
  • Sin la modificación de la palabra clave estática, es un miembro no estático.

2 diferencias

2.1 Si hay modificación de palabras clave estáticas

  • Aquellos modificados con la palabra clave Static son miembros estáticos.
  • Sin la modificación de la palabra clave estática, es un miembro no estático.

2.2 Diferentes tiempos de asignación de memoria

  • Los miembros estáticos existen en la memoria y es necesario crear una instancia de los miembros no estáticos antes de asignar la memoria.

2.3 Diferentes formas de acceder o llamar

  • Miembro estático. Puede acceder directamente a este miembro estático utilizando el nombre de la clase + el nombre del miembro estático.
  • Los miembros estáticos no pueden acceder a los miembros no estáticos porque los miembros estáticos existen en la memoria y es necesario crear una instancia de los miembros no estáticos antes de asignar la memoria.
  • Los miembros no estáticos pueden acceder directamente a los miembros estáticos de la clase.

Miembros estáticos: los miembros de una clase estática agregan el modificador estático para convertirse en miembros estáticos. Puede acceder directamente a este miembro estático usando el nombre de la clase + el nombre del miembro estático, porque los miembros estáticos existen en la memoria y los miembros no estáticos deben crearse instancias antes. se asigna memoria. Por lo tanto, los miembros estáticos no pueden acceder a los miembros no estáticos... Debido a que los miembros estáticos existen en la memoria, los miembros no estáticos pueden acceder directamente a los miembros estáticos en la clase. Los miembros estáticos solo tienen una copia en cada clase, que es una de las soluciones para diferentes objetos de la misma clase. Problemas de intercambio de datos y funciones entre .

Miembros no estáticos: todos los miembros que no son estáticos son miembros no estáticos. Cuando se crea una instancia de una clase, se puede acceder a ella a través del nombre de la clase instanciada... La vida útil de los miembros no estáticos está determinada por la vida útil de la clase. ... Y miembros estáticos Entonces no existe el concepto de vida útil, ya que los miembros estáticos siempre residen dentro del contenido...

Una clase también puede contener miembros estáticos y miembros no estáticos, y una clase también puede contener constructores estáticos y constructores no estáticos...

Las funciones de miembros estáticos pueden hacer referencia directamente a miembros de datos estáticos y funciones de miembros estáticos de la clase, pero no pueden hacer referencia directamente a miembros de datos no estáticos y funciones de miembros no estáticos; de lo contrario, se informará un error de compilación. Si desea hacer referencia, debe obtener el nombre del objeto mediante el paso de parámetros y luego hacer referencia a él a través del nombre del objeto.

3 ejemplos

class A
{
    
    
      publicstatic void f(A a);
     private:
          int x;
}void A::f(A a)
{
    
    
      cout<<x<<endl;//对x的引用是错误的
     cout<<a.x<<endl;//正确的
}
#include<iostream>
using namespace std;
 
class Myclass
{
    
    
	private:
		int		m;	// 非静态数据成员
		static	int	n;	// 静态数据成员
	public:
		Myclass();	// 构造函数
		static	int	getn(Myclass a);	// 静态成员函数
};
 
Myclass::Myclass()
{
    
    
	m = 10;
}
 
int	Myclass::getn(Myclass a)
{
    
    
	cout << a.m << endl;	// 通过类间接使用  非静态数据成员
	return n;		// 直接使用  静态数据成员
}
 
int	Myclass::n = 100;	// 静态数据成员初始化
 
void	main()
{
    
    
	Myclass app1;
	cout << app1.getn(app1) << endl;	// 利用对象引用静态函数成员
	cout << Myclass::getn(app1) << endl;	// 利用类名引用静态函数成员
}

Entonces se puede concluir que la diferencia entre miembros estáticos y miembros no estáticos es la siguiente:

1. Los métodos de acceso son diferentes: miembros estáticos (se accede a través del nombre de la clase.nombre del miembro estático) y miembros no estáticos (se accede a través del nombre del objeto.nombre del miembro no estático)

2. Los miembros estáticos pertenecen a la clase. Todos los objetos de la clase comparten este miembro.

Los miembros no estáticos pertenecen a objetos y cada objeto tiene una copia. Los miembros estáticos solo asignan un espacio en la memoria sin importar cuántos objetos haya en la clase.

Supongo que te gusta

Origin blog.csdn.net/qq_42817360/article/details/133307694
Recomendado
Clasificación