Membres statiques et membres non statiques en C++


Variables membres et fonctions membres

1 catégorie

Les variables membres et les fonctions membres sont divisées en membres statiques et membres non statiques.

Différence et identification :

  • Ceux modifiés avec le mot-clé Static sont des membres statiques.
  • Sans la modification du mot clé Static, il s'agit d'un membre non statique.

2 différences

2.1 S'il y a une modification statique des mots clés

  • Ceux modifiés avec le mot-clé Static sont des membres statiques.
  • Sans la modification du mot clé Static, il s'agit d'un membre non statique.

2.2 Différents temps d'allocation de mémoire

  • Les membres statiques existent en mémoire et les membres non statiques doivent être instanciés avant que la mémoire ne soit allouée.

2.3 Différentes manières d'accéder ou d'appeler

  • Membre statique. Vous pouvez accéder directement à ce membre statique en utilisant le nom de la classe + le nom du membre statique.
  • Les membres statiques ne peuvent pas accéder aux membres non statiques car les membres statiques existent en mémoire et les membres non statiques doivent être instanciés avant que la mémoire ne soit allouée.
  • Les membres non statiques peuvent accéder directement aux membres statiques de la classe

Membres statiques : les membres d'une classe statique ajoutent le modificateur statique pour devenir des membres statiques. Vous pouvez accéder directement à ce membre statique en utilisant le nom de la classe + le nom du membre statique, car les membres statiques existent en mémoire et les membres non statiques doivent être instanciés avant la mémoire est allouée. Par conséquent, les membres statiques ne peuvent pas accéder aux membres non statiques... Étant donné que les membres statiques existent en mémoire, les membres non statiques peuvent accéder directement aux membres statiques de la classe. Les membres statiques n'ont qu'une seule copie dans chaque classe, qui est une des solutions aux différents objets d'une même classe.Problèmes de partage de données et de fonctions entre .

Membres non statiques : Tous les membres sans Static sont des membres non statiques. Lorsqu'une classe est instanciée, elle est accessible via le nom de la classe instanciée... La durée de vie des membres non statiques est déterminée par la durée de vie de la classe. Et les membres statiques Il n'y a donc pas de notion de durée de vie, puisque les membres statiques résident toujours dans le contenu...

Une classe peut également contenir des membres statiques et des membres non statiques, et une classe peut également contenir des constructeurs statiques et des constructeurs non statiques...

Les fonctions membres statiques peuvent référencer directement des données membres statiques et des fonctions membres statiques de la classe, mais elles ne peuvent pas référencer directement des données membres non statiques et des fonctions membres non statiques, sinon une erreur de compilation sera signalée. Si vous souhaitez faire référence, vous devez obtenir le nom de l'objet via le passage de paramètres, puis le référencer via le nom de l'objet.

3 exemples

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;	// 利用类名引用静态函数成员
}

On peut alors conclure que la différence entre les membres statiques et les membres non statiques est la suivante :

1. Les méthodes d'accès sont différentes. Membres statiques (accessibles via le nom de la classe. Nom du membre statique). Membres non statiques (accessibles via le nom de l'objet. Nom du membre non statique)

2. Les membres statiques appartiennent à la classe. Tous les objets de la classe partagent ce membre.

Les membres non statiques appartiennent à des objets, et chaque objet a une copie. Les membres statiques allouent uniquement un espace dans la mémoire, quel que soit le nombre d'objets dans la classe.

Je suppose que tu aimes

Origine blog.csdn.net/qq_42817360/article/details/133307694
conseillé
Classement