La tercera semana de aprendizaje: variables y funciones de miembros estáticos

concepto
  1. Agregar la palabra clave estática antes de la declaración es una función o variable miembro estática
  2. Solo hay un miembro estático, que comparten todos los objetos similares. Los miembros estáticos no pertenecen a ningún objeto, pertenecen a clases.
  3. El operador sizeof no calcula variables miembro estáticas porque no es interno al objeto.
  4. Se puede acceder a las funciones de variables miembro estáticas sin pasar por el objeto
  5. Esencialmente global.
visitar
  1. Nombre de clase: nombre del miembro
  2. Nombre del objeto. Nombre del miembro (solo un formulario)
  3. Puntero -> nombre del miembro (solo un formulario)
  4. Referencia. Nombre del miembro (solo un formulario)
atención
  1. Las variables miembro estáticas deben inicializarse en el archivo de clase, de lo contrario no se pueden compilar
  2. Las funciones miembro estáticas solo pueden usar variables miembro estáticas o llamar a funciones miembro estáticas.
  3. Usted define un constructor y luego cambia las variables estáticas, pero puede haber algunos constructores que no conoce y luego habrá errores en las variables estáticas.
  4. El objeto temporal llamará al destructor cuando muera.Si opera en la variable estática en el destructor, puede ocurrir un error. (La solución es escribir un constructor de copias para contrarrestar esos invitados no invitados)

Por ejemplo, cuatro personas practican la carrera de relevos, anote la velocidad y el tiempo total de cada persona.

#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();
 }

Conocimientos complementarios:

  1. La estática privada es privada y no se puede acceder desde un bai externo. Solo se puede llamar a través de métodos estáticos a través de du, que puede evitar la modificación de variables. La estática pública es pública y se puede acceder externamente, y el valor se puede modificar (si Estás en una declaración privada, pero estás llamando a una función miembro, el compilador te dirá que es privada)

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/ZmJ6666/article/details/108556592
Recomendado
Clasificación