La troisième semaine d'apprentissage: variables et fonctions membres statiques

concept
  1. L'ajout du mot clé static avant la déclaration est une variable ou une fonction membre statique
  2. Il n'y a qu'un seul membre statique, qui est partagé par tous les objets similaires. Les membres statiques n'appartiennent à aucun objet, ils appartiennent à des classes!
  3. L'opérateur sizeof ne calcule pas les variables membres statiques car il n'est pas interne à l'objet.
  4. Les fonctions des variables membres statiques sont accessibles sans passer par l'objet
  5. Essentiellement mondial.
visite
  1. Nom de la classe: nom du membre
  2. Nom de l'objet. Nom du membre (juste un formulaire)
  3. Pointeur -> nom du membre (juste un formulaire)
  4. Référence. Nom du membre (juste un formulaire)
attention
  1. Les variables membres statiques doivent être initialisées dans le fichier de classe, sinon elles ne peuvent pas être compilées
  2. Les fonctions membres statiques ne peuvent utiliser que des variables membres statiques ou appeler des fonctions membres statiques!
  3. Vous définissez un constructeur, puis modifiez les variables statiques, mais il se peut que vous ne connaissiez pas certains constructeurs, puis il y aura des erreurs dans les variables statiques.
  4. L'objet temporaire appellera le destructeur lorsqu'il meurt. Si vous opérez sur la variable statique du destructeur, une erreur peut se produire. (La solution est d'écrire un constructeur de copie pour contrer ces invités indésirables)

Par exemple, quatre personnes pratiquent la course de relais, veuillez noter la vitesse et le temps total de chaque personne

#include<iostream>
#include<string> 
using namespace std;
class athlete
{
    
    
	private:
		string name;
		double speed;	
	public:
		athlete(string n="No",double s=0):name(n),speed(s){
    
    }
		athlete(athlete& a):name(a.name),speed(a.speed){
    
    }
		void timing(){
    
    time+= speed;}
		static void show();
		~athlete();
		static double time;
		static int Member;
 } ; 
 
 double athlete::time=0;
 int athlete::Member = 4;
 void athlete::show()
 {
    
    
 	cout<<"Total time: "<<time<<endl;
 }
 athlete::~athlete() {
    
    
 	cout<<name<<" finish, spend "<<time<<" sec\n";
 	Member --;
 }
 
 int main()
 {
    
    
 	string* p;
 	double sp;
 	while(athlete::Member)  //我觉得这样子很阔以
 	{
    
    
 		cout<<"Enter name and speed:\n";
 		p = new string;
 		cin>>*p;
 		cin>>sp;
 		athlete(*p,sp).timing();	    
 		delete p;
	 }
	 athlete::show();
 }

Connaissances supplémentaires:

  1. La statique privée est privée et n'est pas accessible à partir de bai externe. Elle ne peut être appelée que par des méthodes statiques via du, ce qui peut empêcher la modification des variables. La statique publique est publique et est accessible de l'extérieur, et la valeur peut être modifiée (si Vous êtes dans une déclaration privée, mais vous appelez une fonction membre, le compilateur vous dira qu'elle est privée)

Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/ZmJ6666/article/details/108556592
conseillé
Classement