es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Puede una función miembro sobrecargada de una clase depender del resultado de un constructor sobrecargado de esa clase?

Tengo una clase con un constructor sobrecargado en el que cada versión del constructor inicializa un conjunto diferente de atributos privados para esa clase. También tengo una función miembro pública de esa clase que realizará una operación basada en los atributos privados de esa clase. Quiero sobrecargar la función miembro para que cuando la llame desde la función principal, ejecute una operación y devuelva un valor. Cada operación será diferente según el resultado exacto del constructor correspondiente. ¿Es esto posible? ¿Cómo podría implementar esto en C ++? Este es un código incorrecto que intenta expresar la idea:

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es posible sobrecargar la función de miembro calcVal() de esta manera. Para implementar esto en C++, tendría que usar la sobrecarga de funciones. Esto se hace creando múltiples funciones con el mismo nombre, pero diferentes parámetros. El código a continuación muestra cómo se podría hacer:

    class someClass { 
    
        double var1, var2, var3, var4, var5;
    
        public: 
        someClass(double in1) { 
            // operaciones que inicializan var1 
        }
    
        someClass(double in1, double in2) { 
            // operaciones que inicializan var1 y var2 
        }
    
        someClass(double in1, double in2, double in3) { 
            // operaciones que inicializan var1, var2 y var3 
        }
    
        someClass(double in1, double in2, double in3, double in4) { 
            // operaciones que inicializan var1, var2, var3 y var4 
        }
    
        someClass(double in1, double in2, double in3, double in4, double in5) { 
            // operaciones que inicializan var1, var2, var3, var4 y var5 
        }
    
    
        double calcVal(double in1) { 
            return in1 + var3; 
            // este se ejecuta si se llamó al 1er constructor 
        }
    
        double calcVal(double in1, double in2) { 
            return in1 + in2; 
            // este se ejecuta si se llamó al 2do constructor 
        }
    
        double calcVal(double in1, double in2, double in3) { 
            return in1 + in2 + in3; 
            // este se ejecuta si se llamó al 3er constructor 
        }
    
        double calcVal(double in1, double in2, double in3, double in4) { 
            return in1 + in2 + in3 + in4; 
            // este se ejecuta si se llamó al 4to constructor 
        }
    
        double calcVal(double in1, double in2, double in3, double in4, double in5) { 
            return in1 + in2 + in3 + in4 + in5; 
            // este se ejecuta si se llamó al 5to constructor 
        }
    }
    

Comments are closed.