Función Miembro: Es una función que puede ser declarada como miembro de una clase . Por lo general, se declara dentro de la definición de clase y funciona en miembros de datos de la misma clase. Puede tener acceso a miembros de datos privados, públicos y protegidos de la misma clase. Esta función se declara como se muestra a continuación:
C++
// Given Class class memberdemo { private: { public: { void check(); } // Member Function trial::void check(); } }
Función no miembro: la función que se declara fuera de la clase se conoce como la función no miembro de esa clase. A continuación se muestra la diferencia entre los dos:
- La función miembro puede aparecer fuera del cuerpo de la clase (por ejemplo, en el archivo de implementación). Pero, si se sigue este enfoque, la función miembro debe ser calificada por el nombre de su clase. Esto es para identificar que esa función es miembro de una clase particular. Pero una función que no es miembro siempre aparece fuera de una clase.
- Otra diferencia entre las funciones miembro y las funciones no miembro es cómo se llaman (o invocan) en la rutina principal.
Programa 1 :
C++
// C++ to illustrate the above concepts #include <iostream> using namespace std; class A { int a; public: // Member function void memberfn(int x) { a = x; cout << "Member function inside" << " class declared\n"; } // Member function but definition // outside the class void memberfn2(); }; // Member function declared with // scope resolution operator void A::memberfn2() { cout << "Member function but declared " << " outside the class\n"; } // Non-member function void nonmemberfn() { cout << "Non-member function\n"; } // Driver Code int main() { // Object of class A A obj; // Calling Member Function obj.memberfn(5); obj.memberfn2(); // Calling Non-Member Function nonmemberfn(); return 0; }
Member function inside class declared Member function but declared outside the class Non-member function
Explicación: Del programa anterior, hay tres tipos de casos:
- Una función miembro se declara y define en la clase y se llama usando el objeto de la clase.
- Una función miembro se declara en la clase pero se define fuera de la clase y se llama usando el objeto de la clase.
- Una función que no es miembro que se declara fuera de la clase pero se llama función normal dentro de la función principal.
Ahora, aquí surge la pregunta de si es posible llamar a una función no miembro dentro de una función miembro en un programa o no. La respuesta es SÍ . A continuación se muestra el programa para ilustrar cómo llamar a una función que no es miembro dentro de una función miembro:
Programa 2 :
C++
// C++ program to illustrate the // above approach #include <bits/stdc++.h> using namespace std; // Function to find the factorial // of the number N int fact(int n) { if (n == 0 || n == 1) return 1; else return n * fact(n - 1); } // Class Examples class example { int x; public: void set(int x) { this->x = x; } // Calling the non-member function // inside the function of class int find() { return fact(x); } }; // Driver Code int main() { // Object of the class example obj; obj.set(5); // Calling the member function cout << obj.find(); return 0; }
120
Explicación: se puede llamar a una función que no es miembro dentro de una función miembro, pero la condición es que la función que no es miembro debe declararse antes que la función miembro. En el ejemplo anterior, se sigue el mismo enfoque y es posible invocar una función no miembro, por lo que la respuesta es el factorial de 5 , es decir , 120 .
Publicación traducida automáticamente
Artículo escrito por sonidhimanmnnit y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA