logo

Preguntas y respuestas de la entrevista sobre C++ (2024)

C++ – el lenguaje de programación favorito de los codificadores, conocido y de todos los tiempos. Sigue siendo relevante como lo era a mediados de los años 80. Como lenguaje de programación de propósito general y orientado a objetos, se emplea ampliamente durante la codificación. Como resultado, algunos puestos laborales exigen que las personas dominen C++. Es utilizado por las principales empresas de TI como Evernote, LinkedIn, Microsoft, Opera, NASA , y Meta debido a su confiabilidad, rendimiento y amplia gama de entornos en los que puede usarse. Entonces, para ingresar a estas empresas, es necesario ser minucioso en estos Las 50 preguntas principales de la entrevista sobre C++ lo que puede hacerte parecer un experto frente a los reclutadores.

Las 50 preguntas principales de la entrevista sobre C++ para principiantes y experimentados (2022)

Para que esté listo para la entrevista, hemos traído el Las 50 preguntas principales de la entrevista sobre C++ para principiante, intermedio y experimentado por lo que definitivamente debes pasar para ubicarte entre las principales empresas multinacionales.

Preguntas de la entrevista de C ++ para principiantes

1. ¿Qué es C++? ¿Cuáles son las ventajas de C++?

C++ es un lenguaje de programación orientado a objetos que se introdujo para superar las jurisdicciones donde faltaba C. Por orientado a objetos queremos decir que funciona con el concepto de polimorfismo , herencia , abstracción , encapsulación , objeto y clase .



Ventajas de C++ :

  1. C++ es un lenguaje OOP, lo que significa que los datos se consideran objetos.
  2. C++ es un lenguaje multiparadigma; En términos simples, significa que podemos programar la lógica, estructura y procedimiento del programa.
  3. La gestión de la memoria es una característica clave en C++ ya que permite la asignación dinámica de memoria.
  4. Es un lenguaje de programación de nivel medio, lo que significa que puede desarrollar juegos, aplicaciones de escritorio, controladores y kernels.

Para leer más, consulte el artículo – ¿Cuáles son las ventajas de C++?

2. ¿Cuáles son los diferentes tipos de datos presentes en C++?

tipos de datos en C++

Diferentes tipos de tipos de datos en C++

Para obtener más información, consulte estándar También se conoce como Estándar o puede interpretarse como un espacio de nombres. El comando usando el espacio de nombres estándar informa al compilador que agregue todo lo que esté debajo del espacio de nombres estándar e inculcarles en el espacio de nombres global . Toda esta inculcación del espacio de nombres global nos beneficia usar corte y comiendo sin uso std::_operador_.

Para obtener más información, consulte espacio de nombres y estándar .

4. ¿Qué son las referencias en C++?

Cuando una variable se describe como referencia, se convierte en un alias de la variable ya existente. En términos simples, una variable referenciada es otra variable con nombre de una variable existente, teniendo en cuenta que los cambios realizados en la variable de referencia se reflejarán en la variable ya existente. Una variable de referencia está precedida por un ‘&’ símbolo.

Sintaxis:

int GFG = 10;  // reference variable int& ref = GFG;>

Para obtener más información, consulte referencias en C++

5. ¿Qué quiere decir con llamada por valor y llamada por referencia?

En este lenguaje de programación para llamar a una función tenemos 2 métodos: Llamar por valor y Llamar por referencia

Llamar por valor

Llamar por referencia

Se pasa una copia de una variable.Una variable en sí se pasa fundamentalmente.
Llamar a una función enviando los valores copiando variables.Llamar a una función enviando la dirección de la variable pasada.
Los cambios realizados en la función nunca se reflejan fuera de la función en la variable. En resumen, el valor original nunca se modifica en Call by Value.Los cambios realizados en las funciones se pueden ver fuera de la función en la función pasada. En resumen, el valor original se modifica en Call por referencia.
Los parámetros reales y formales pasados ​​se almacenan en diferentes ubicaciones de memoria. Por lo tanto, hacer que Call by Value tenga un poco de memoria es insuficienteLos parámetros reales y formales pasados ​​se almacenan en la misma ubicación de memoria. Por lo tanto, hacer que Call by Reference sea un poco más eficiente en memoria.

Para obtener información, consulte la diferencia entre llamada por valor y llamada por referencia

6. Definir token en C++

Un token es el elemento individual más pequeño de un programa que comprende un compilador. Un token comprende lo siguiente:

  1. Palabras clave – Que contengan un significado especial para el compilador.
  2. Identificadores – Que tengan un valor/identidad únicos
  3. Constantes – Que nunca cambien su valor durante todo el programa.
  4. Instrumentos de cuerda – Que contenga la secuencia homogénea de datos.
  5. Símbolos especiales – Tienen algún significado especial y no pueden utilizarse para otro fin; p.ej: [] () {}, ; * = #
  6. Operadores – Quién realiza operaciones sobre el operando

Para obtener más información, consulte Fichas en C++

7. ¿Cuál es la diferencia entre C y C++?

C

C++

Es un lenguaje de programación procedimental. En palabras simples, no admite clases ni objetos.Es una mezcla de lenguajes de programación tanto procedimentales como orientados a objetos. En palabras simples, admite clases y objetos.
No admite ningún concepto de programación orientada a objetos como polimorfismo, abstracción de datos, encapsulación, clases y objetos.Soporta todos los conceptos de datos.
No admite sobrecarga de funciones y operadoresAdmite sobrecarga de funciones y operadores respectivamente.
Es un lenguaje basado en funciones.Es un lenguaje controlado por objetos.

Para obtener más información, consulte Diferencia entre C y C++

8. ¿Cuál es la diferencia entre estructura y clase?

estructura

Clase

Los miembros de la estructura siempre están en modo público predeterminado.Los miembros de la clase pueden estar en modo privado, protegido y público.
Las estructuras son del tipo valor. Sólo tienen valor en la memoria.Las clases son de tipo referencial. Contiene una referencia de un objeto en la memoria.
La memoria en las estructuras se almacena como pilas.La memoria de las clases se almacena en montones.

Para obtener más información, consulte la Diferencia entre estructura y clase.

9. ¿Cuál es la diferencia entre referencia y puntero?

Referencia

punteros en c

Puntero

El valor de una referencia no se puede reasignarEl valor de un puntero se puede reasignar.
Nunca puede contener una nulo valor ya que necesita un valor existente para convertirse en un alias dePuede sostener o apuntar a un nulo valor y ser denominado como nulo o puntero nulo
No puede funcionar con matrices.Puede funcionar con matrices.
Para acceder a los miembros de clase/estructura utiliza un ' . Para acceder a los miembros de clase/estructura utiliza un ' ->
Se puede acceder fácilmente a la ubicación de memoria de referencia o se puede utilizar directamenteNo se puede acceder fácilmente a la ubicación de memoria de un puntero ya que tenemos que usar una desreferencia ' *

Para obtener más información, consulte la Diferencia entre referencia y puntero

10. ¿Cuál es la diferencia entre sobrecarga de funciones y sobrecarga de operadores?

Sobrecarga de funciones

Sobrecarga del operador

Básicamente se trata de definir una función de numerosas maneras, de modo que hay muchas formas de llamarla o, en términos simples, tener múltiples versiones de la misma función.Básicamente se trata de dar un significado especial al significado existente de un operador o, en términos simples, redefinir el significado predefinido.
Las funciones parametrizadas son un buen ejemplo de sobrecarga de funciones, ya que con solo cambiar el argumento o parámetro de una función la haces útil para diferentes propósitos.El polimorfismo es un buen ejemplo de sobrecarga de operadores, ya que un objeto de clase de asignaciones puede ser utilizado y llamado por diferentes clases para diferentes propósitos.

Ejemplo de sobrecarga de funciones:

  1. int GFG(int X, int Y);
  2. int GFG(char X, char Y);

Ejemplo de sobrecarga del operador:

  1. int GFG() = X() + Y();
  2. int GFG() = X() – Y();

Para obtener más información, consulte Sobrecarga del operador y Sobrecarga de funciones

11. ¿Cuál es la diferencia entre una matriz y una lista?

matrices

Liza

Las matrices son ubicaciones de memoria contiguas de tipos de datos homogéneos almacenados en una ubicación o tamaño fijo.Las listas son elementos individuales clásicos que están vinculados o conectados entre sí mediante punteros y no tienen un tamaño fijo.
Las matrices son de naturaleza estática.Las listas son de naturaleza dinámica
Utiliza menos memoria que las listas enlazadas.Utiliza más memoria ya que tiene que almacenar el valor y la ubicación de la memoria del puntero.

Para obtener más información, consulte Matrices versus lista

12. ¿Cuál es la diferencia entre un bucle while y un bucle do- while?

Mientras bucle

bucle hacer-mientras

El bucle while también se denomina bucle controlado por entrada.El bucle do- while se denomina bucle de control de salida.
Si la condición no se cumple, las declaraciones dentro del bucle no se ejecutaránIncluso si la condición no se cumple, las declaraciones dentro del bucle se ejecutarán al menos una vez.

Ejemplo de un bucle while:

mientras (condición)

{declaraciones a ejecutar;};

Ejemplo de un bucle do- while:

hacer {

declaraciones a ejecutar;

} while(condición o expresión);

Para obtener más información, consulte la Diferencia entre bucle while y do- while

13. ¿Discute la diferencia entre prefijo y sufijo?

prefijo

sufijo

Simplemente significa poner el operador antes del operando.Simplemente significa poner el operador después del operando.
Se ejecuta solo antes ‘; ‘ Se ejecuta solo después ‘; ‘
La asociatividad del prefijo ++ es de derecha a izquierda.La asociatividad de postfix ++ es de izquierda a derecha.

Para obtener más información, consulte la Diferencia entre prefijo y postfijo

14. ¿Cuál es la diferencia entre nuevo y malloc()?

nuevo

malloc()

nuevo es un operador que realiza una operaciónmalloc es una función que devuelve y acepta valores
nuevas llamadas a los constructoresmalloc no puede llamar a un constructor
new es más rápido que malloc ya que es un operadormalloc es más lento que nuevo ya que es una función
nuevo devuelve el tipo de datos exactomalloc devuelve nulo*

Para obtener más información, consulte Diferencia entre nuevo y malloc()

15. ¿Cuál es la diferencia entre funciones virtuales y funciones virtuales puras?

Función Virtual

Función virtual pura

Una función virtual es una función miembro de una clase base que se puede redefinir en otra clase derivada.Una función virtual pura es una función miembro de una clase base que solo se declara en una clase base y se define en una clase derivada para evitar que se convierta en una clase abstracta.
Una Función virtual tiene su definición en su respectiva clase base.No hay definición en Pure Virtual Function y se inicializa con un especificador puro (= 0).
La clase base tiene una función virtual que se puede representar o instanciar; En palabras simples, se puede hacer su objeto.Una clase base que tiene una función virtual pura se vuelve abstracta y no se puede representar ni instanciar; En palabras simples, significa que su objeto no se puede crear.

Para obtener más información, consulte la Diferencia entre funciones virtuales y funciones virtuales puras

16. ¿Qué son las clases y los objetos en C++?

Una clase es un tipo de datos definido por el usuario donde todas las funciones miembro y los miembros de datos están hechos a medida de acuerdo con las demandas y requisitos, además de que se puede acceder a todos ellos con la ayuda de un objeto . Para declarar un tipo de datos definido por el usuario utilizamos una palabra clave clase.

Un objeto es una instancia de una clase y una entidad con valor y estado; En términos simples, se utiliza como catalizador o para representar a un miembro de la clase. Puede contener parámetros diferentes o ninguno.

Nota: Una clase es un modelo que define las funciones que utiliza un objeto.

Para obtener más información, consulte este ¿Qué son las clases y los objetos?

git pago

17. ¿Qué es la anulación de funciones?

Cuando una función con el mismo nombre, los mismos argumentos o parámetros y el mismo tipo de retorno ya presente/declarado en la clase base se utiliza en una clase derivada, se conoce como anulación de función. Es un ejemplo de polimorfismo en tiempo de ejecución o enlace tardío, lo que significa que la función anulada se ejecutará en el tiempo de ejecución de la ejecución.

Para obtener más información, consulte Anulación de funciones en C++

18. ¿Cuáles son los diversos conceptos de programación orientada a objetos en C++?

  • Clases : Es un tipo de datos definido por el usuario.
  • Objetos : Es una instancia de una clase.
  • Abstracción: Es una técnica de mostrar sólo los detalles necesarios.
  • Encapsulación: Envoltura de datos en una sola unidad
  • Herencia: La capacidad de una clase para derivar propiedades y características de otra clase.
  • Polimorfismo: Se conoce como polimorfismo a muchas formas de una misma cosa.

Para obtener más información, consulte Varios conceptos de POO en C++

19. explicar la herencia

La capacidad o habilidad de una clase para derivar propiedades y características de otra clase se conoce como herencia. En términos simples, es un sistema o técnica de reutilizar y ampliar clases existentes sin modificarlas.

Para obtener más información, consulte Herencia

20. ¿Cuándo deberíamos utilizar la herencia múltiple?

Las herencias múltiples significan que una clase derivada puede heredar dos o más clases base/padres. Es útil cuando una clase derivada necesita combinar numerosos atributos/contratos y heredar parte o toda la implementación de estos atributos/contratos. Para tomar un ejemplo de la vida real, considere a sus padres, donde el padre A es su PAPÁ. El padre B es su MAMÁ y su hijo C es usted.

herencias múltiples

Herencias Múltiples

Para obtener más información, consulte Herencia múltiple .

21. ¿Qué es la herencia virtual?

La herencia virtual es una técnica que garantiza que las clases derivadas de nietos hereden solo una copia de las variables miembro de una clase base. O en términos simples, la herencia virtual se usa cuando nos enfrentamos a una situación de herencias múltiples pero queremos evitar que aparezcan múltiples instancias de la misma clase en la jerarquía de herencia.

22. ¿Qué es el polimorfismo en C++?

Se conoce como polimorfismo a muchas formas de una misma cosa. En términos simples, podemos decir que el polimorfismo es la capacidad de mostrar una función miembro en múltiples formas dependiendo del tipo de objeto que las llama.

En otras palabras, también podemos decir que un hombre puede ser empleado de alguien, hijo de alguien, padre de alguien y esposo de alguien; así es como se puede proyectar el polimorfismo en la vida real.

Hay 2 tipos de polimorfismo:

  1. Polimorfismo en tiempo de compilación
    • Sobrecarga de funciones
    • Sobrecarga del operador
  2. Polimorfismo en tiempo de ejecución
    • Anulación de funciones
    • Función Virtual

Para saber más al respecto, consulte Polimorfismo

23. ¿Cuáles son los diferentes tipos de polimorfismo en C++?

Hay 2 tipos de polimorfismo.

Polimorfismo en tiempo de compilación o enlace estático

Este tipo de polimorfismo se logra durante el tiempo de compilación del programa, lo que hace que sea un poco más rápido que el tiempo de ejecución. Además, la herencia no interviene en ello. Está compuesto por 2 técnicas más :

Sobrecarga de funciones: Cuando hay varias funciones con el mismo nombre pero con diferentes parámetros, esto se conoce como sobrecarga de funciones.

C++
// same name different arguments int GFG() {} int GFG(int a) {} float GFG(double a) {} int GFG(int a, double b) {}>


Sobrecarga del operador: Básicamente se trata de dar un significado especial al significado existente de un operador o, en términos simples, redefinir el significado predefinido.

C++
class GFG {  // private and other modes  statements public returnType  operator symbol(arguments){ statements } statements };>

Polimorfismo en tiempo de ejecución o enlace tardío

El polimorfismo en tiempo de ejecución tiene lugar cuando se invocan funciones durante el tiempo de ejecución.

Anulación de funciones: La anulación de funciones ocurre cuando una función miembro de una clase base se redefine en una clase derivada con los mismos argumentos y tipo de retorno.

C++
// C++ program to demonstrate // Function overriding #include  using namespace std; class GFG { public:  virtual void display()  {  cout << 'Function of base class' << endl;  } }; class derived_GFG : public GFG { public:  void display()  {  cout << 'Function of derived class' << endl;  } }; int main() {  derived_GFG dg;  dg.display();  return 0; }>

Producción:

Function of derived class>

Para obtener más información, consulte Diferentes tipos de polimorfismo

24. Compare el polimorfismo en tiempo de compilación y el polimorfismo en tiempo de ejecución

Polimorfismo en tiempo de compilación

Polimorfismo en tiempo de ejecución

También se denomina enlace estático y enlace anticipado.También se denomina enlace dinámico y enlace tardío.
Es rápido porque la ejecución se conoce temprano en el tiempo de compilación.Es lento en comparación con el tiempo de compilación porque la ejecución se conoce en tiempo de ejecución.
Se logra mediante sobrecarga de funciones y sobrecarga de operadores.Se logra mediante funciones virtuales y anulación de funciones.

Para obtener más información, consulte Polimorfismo en tiempo de compilación y polimorfismo en tiempo de ejecución

25. Explique el constructor en C++.

Un constructor es un tipo especial de función miembro de una clase, cuyo nombre es el mismo que el de la clase que lo invoca e inicializa el valor del objeto de una clase.

Hay 3 tipos de constructores:

A. Constructor predeterminado: Es el tipo de constructor más básico que no acepta argumentos ni parámetros. Incluso si no se llama, el compilador lo llama automáticamente cuando se crea un objeto.

Ejemplo:

C++
class Class_name { public:  Class_name() { cout << 'I am a default constructor'; } };>


B. Constructor parametrizado: Es un tipo de constructor que acepta argumentos o parámetros. Debe llamarse explícitamente pasando valores en los argumentos, ya que estos argumentos ayudan a inicializar un objeto cuando se crea. También tiene el mismo nombre que el de la clase.

Además, se utiliza para sobrecargar constructores.

Ejemplo:

orden aleatorio sql
C++
// CPP program to demonstrate // parameterized constructors #include  using namespace std; class GFG { private:  int x, y; public:  // Parameterized Constructor  GFG(int x1, int y1)  {  x = x1;  y = y1;  }  int getX() { return x; }  int getY() { return y; } }; int main() {  // Constructor called  GFG G(10, 15);  // Access values assigned by constructor  cout << 'G.x = ' << G.getX() << ', G.y = ' << G.getY();  return 0; }>

Producción

G.x = 10, G.y = 15>

C. Copiar constructor: Un constructor de copia es una función miembro que inicializa un objeto usando otro objeto de la misma clase. Además, el constructor Copiar toma una referencia a un objeto de la misma clase como argumento.

Ejemplo:

C++
Sample(Sample& t) { id = t.id; }>


Para obtener más información, consulte Constructores

26. ¿Qué son los destructores en C++?

Los destructores son miembros de funciones de una clase que eliminan un objeto cuando un objeto de la clase sale del alcance. Los destructores tienen el mismo nombre que la clase precedido por un signo de tilde (~). Además, los destructores siguen un abajo hacia arriba enfoque, a diferencia de los constructores que siguen un enfoque de arriba a abajo.

Sintaxis:

~constructor_name(); // tilde sign signifies that it is a destructor>

Para obtener más información, consulte Destructor .

27. ¿Qué es un destructor virtual?

Al destruir instancias u objetos de una clase derivada utilizando un objeto puntero de clase base, se invoca un destructor virtual para liberar espacio de memoria asignado por el objeto o instancia de clase derivada.

El destructor virtual garantiza que primero se llame al destructor de la clase derivada. Luego se llama al destructor de la clase base para liberar el espacio ocupado por ambos destructores en la clase de herencia, lo que nos salva de la pérdida de memoria. Se recomienda hacer que su destructor sea virtual siempre que su clase sea polimórfica.

Para obtener más información, consulte Virtual Destructor

28. ¿Es posible la sobrecarga del destructor? En caso afirmativo, explique y en caso negativo, ¿por qué?

La respuesta sencilla es NO No podemos sobrecargar un destructor. Es obligatorio tener solo un destructor por clase en C++. Además, Destructor no acepta argumentos ni tiene un parámetro que pueda ayudar a sobrecargar.

Preguntas de la entrevista de C ++: nivel intermedio

29. ¿Qué operaciones están permitidas en punteros?

Los punteros son las variables que se utilizan para almacenar la ubicación de la dirección de otra variable. Las operaciones que se permiten a un puntero son:

índice de lista
  1. Incremento/Decremento de un Puntero
  2. Suma y resta de números enteros a un puntero.
  3. Comparación de punteros del mismo tipo.

30. ¿Cuál es el propósito de la borrar ¿operador?

El operador de eliminación se utiliza para eliminar/eliminar todas las características/propiedades de un objeto desasignando su memoria; además, al final devuelve verdadero o falso. En términos simples, destruye o desasigna objetos de matriz y que no son de matriz (puntero) que se crean mediante nuevas expresiones.

C++
int GFG = new int[100]; // uses GFG for deletion delete[] GFG;>

Para obtener más información, consulte Eliminar operador

31. ¿En qué se diferencia eliminar [] de eliminar?

borrar[]

borrar

Se utiliza para eliminar una matriz completa.Se utiliza para eliminar un solo puntero.
Se utiliza para eliminar los objetos de nuevo[]; Con esto podemos decir que borrar[] Se utiliza para eliminar una serie de objetos.Se utiliza para eliminar los objetos de nuevo; Con esto podemos decir que borrar Se utiliza para eliminar un solo objeto.
Puede llamar a tantos destructores como quiera.Sólo puede llamar al destructor de una clase una vez.

32. ¿Qué sabes sobre la clase de amigo y la función de amigo?

Una clase amiga es una clase que puede acceder tanto a las variables protegidas como a las privadas de las clases donde está declarada como amiga.

Ejemplo de clase de amigo:

C++
class Class_1st {  // ClassB is a friend class of ClassA  friend class Class_2nd;  statements; } class Class_2nd {  statements; }>


Una función amiga es una función que se utiliza para acceder a miembros de datos privados, protegidos y públicos o funciones miembro de otras clases. Se declara con una palabra clave amiga. La ventaja de una función amiga es que no está vinculada al ámbito de la clase y una vez declarada en una clase, además, no puede ser llamada por un objeto de la clase; por lo tanto, puede ser llamado por otras funciones. Considerando todos los puntos mencionados podemos decir que una función amiga es una función global. .

Ejemplo de función amiga:

C++
class GFG {  statements;  friend dataype function_Name(arguments);  statements; } OR class GFG {  statements' friend int divide(10, 5);  statements; }>


Para obtener más información, consulte la función de amigo y clase de amigo

33. ¿Qué es un error de desbordamiento?

El error de desbordamiento ocurre cuando el número es demasiado grande para que lo maneje el tipo de datos. En términos simples, es un tipo de error que es válido para lo definido pero excede el rango definido donde debería coincidir/mentir.

Por ejemplo, el rango de tipo de datos int es –2,147,483,648 a 2,147,483,647 y si declaramos una variable de tamaño 2,247,483,648 generará un error de desbordamiento.

34. ¿Qué hace el operador de Resolución de Alcance?

Un operador de resolución de alcance se indica con un ' :: ' símbolo. Al igual que su nombre, este operador resuelve la barrera del alcance de un programa. Un operador de resolución de alcance se utiliza para hacer referencia a una función miembro o una variable global fuera de su alcance y, además, también puede acceder a la variable o función oculta en un programa.

La resolución de alcance se utiliza para numerosas cantidades de tareas:

  1. Para acceder a una variable global cuando hay una variable local con el mismo nombre
  2. Para definir la función fuera de la clase.
  3. En caso de herencias múltiples
  4. Para espacio de nombres

Para obtener más información, consulte Operador de resolución de alcance

35. ¿Cuáles son los modificadores de acceso a C++?

La restricción de acceso especificada para los miembros de la clase (ya sea una función miembro o un miembro de datos) se conoce como modificadores/especificadores de acceso.

Los modificadores de acceso son de 3 tipos:

  1. Privado - No se puede acceder ni visualizar desde fuera de la clase.
  2. Protegido – Se puede acceder a él si y sólo si el descriptor de acceso es la clase derivada.
  3. Público - Se puede acceder o visualizar desde fuera de la clase.

Para obtener más información, consulte Modificadores de acceso

36. ¿Puedes compilar un programa sin la función principal?

Sí, es absolutamente posible compilar un programa sin main(). Por ejemplo, utilice macros que definan el elemento principal.

C++
// C++ program to demonstrate the // a program without main() #include  #define fun main  int fun(void) {  printf('Geeksforgeeks');  return 0; }>

Para obtener más información, consulte ¿Puedes compilar un programa sin la función principal?

37. ¿Qué es STL?

STL se conoce como biblioteca de plantillas estándar y es una biblioteca que proporciona 4 componentes como contenedor, algoritmos e iteradores.

C++ STL

Para obtener más información, consulte STL en C++

38. Defina la función en línea. ¿Podemos tener una función recursiva en línea en C++?

Una función en línea es una forma de solicitud, no una orden a un compilador, lo que da como resultado la inserción de nuestra función en el cuerpo de la función principal. Una función en línea puede convertirse en una sobrecarga si el tiempo de ejecución de la función es menor que el tiempo de cambio de la función que llama a la función llamada. Para hacer una función en línea use la palabra clave en línea antes y define la función antes de realizar cualquier llamada a la función.

Función en línea

Explicación de la función en línea

Sintaxis:

inline data_type function_name() { Body; }>

La respuesta es No; No puede ser recursivo.

Una función en línea no puede ser recursiva porque en el caso de una función en línea el código simplemente se coloca en la posición desde donde se llama y no mantiene ninguna información en la pila que sea necesaria para la recursividad.

Además, si escribe una palabra clave en línea delante de una función recursiva, el compilador la ignorará automáticamente porque el compilador solo toma la palabra clave en línea como una sugerencia.

Para obtener más información, consulte Función en línea

39. ¿Qué es una clase abstracta y cuándo la usas?

Una clase abstracta es una clase diseñada específicamente para usarse como clase base. Una clase abstracta contiene al menos una función virtual pura. Declaras una función virtual pura usando un especificador puro (= 0) en la declaración de una función miembro virtual en la declaración de clase

No puede utilizar una clase abstracta como tipo de parámetro, tipo de retorno de función o tipo de conversión explícita, ni puede declarar un objeto de una clase abstracta. Sin embargo, se puede utilizar para declarar punteros y referencias a una clase abstracta.

Se utiliza una clase abstracta si desea proporcionar una funcionalidad implementada común entre todas las implementaciones del componente. Las clases abstractas le permitirán implementar parcialmente su clase, mientras que las interfaces no tendrán implementación para ningún miembro. En palabras simples, las clases abstractas son una buena opción si desea proporcionar detalles de implementación a sus hijos pero no desea permitir que se cree una instancia directa de una instancia de su clase.

40. ¿Cuáles son los miembros de datos estáticos y las funciones de miembros estáticos?

El miembro de datos estáticos de una clase es un miembro de datos normal pero precedido por una palabra clave estática. Se ejecuta antes de main() en un programa y se inicializa a 0 cuando se crea el primer objeto de la clase. Sólo es visible para una clase definida pero su alcance es de por vida.

Sintaxis:

  static Data_Type Data_Member;>

La función miembro estática es la función miembro que se utiliza para acceder a otros miembros de datos estáticos u otras funciones miembro estáticas. También se define con una palabra clave estática. Podemos acceder a la función miembro estática utilizando el nombre de la clase o los objetos de la clase.

Sintaxis:

classname::function name(parameter);>

Preguntas de la entrevista sobre C++: nivel experto

41. ¿Cuál es el uso principal de la palabra clave volátil?

Al igual que su nombre, las cosas pueden cambiar repentina e inesperadamente; Por tanto, se utiliza para informar al compilador que el valor puede cambiar en cualquier momento. Además, la palabra clave volátil impide que el compilador realice una optimización del código. Estaba destinado a ser utilizado en la interfaz con hardware mapeado en memoria, controladores de señales e instrucciones de código de máquina.

Para obtener más información, consulte este Volátil

42. Defina la clase de almacenamiento en C++ y nombre algunas

La clase de almacenamiento se utiliza para definir las características (vida útil y visibilidad) de una variable o función. Estas características suelen ayudar a rastrear la existencia de una variable durante el tiempo de ejecución de un programa.

Sintaxis:

storage_class var_data_type var_name;>

Algunos tipos de clases de almacenamiento:

Ejemplos de clase de almacenamiento

Para obtener más información, consulte Clase de almacenamiento

43. ¿Qué es un especificador de clase de almacenamiento mutable? ¿Cómo se pueden utilizar?

Al igual que su nombre, el especificador de clase de almacenamiento mutable se usa solo en un miembro de datos de clase para hacerlo modificable aunque el miembro sea parte de un objeto declarado como constante. Los miembros estáticos, constantes o de referencia no pueden utilizar el especificador mutable. Cuando declaramos una función como constante, este puntero pasado a la función se vuelve constante.

44. Defina la variable de alcance del bloque.

Entonces, el alcance de una variable es una región donde se puede acceder a una variable. Hay dos regiones de alcance, una global y una de bloque o local.

Una variable de alcance de bloque también se conoce como variable de alcance local. Una variable que se define dentro de una función (como main) o dentro de un bloque (como bucles y bloques if) es una variable local. Se puede usar SÓLO dentro de esa función/bloque en particular en el que está declarado. una variable con alcance de bloque no estará disponible fuera del bloque incluso si el bloque está dentro de una función.

Para obtener más información, consulte Alcance de una variable

45. ¿Cuál es la función de la palabra clave Auto?

La palabra clave auto se puede utilizar para declarar una variable con un tipo complejo de forma sencilla. Puede usar auto para declarar una variable si la frase de inicialización contiene plantillas, punteros a funciones, referencias a miembros, etc. Con capacidades de inferencia de tipos, podemos dedicar menos tiempo a escribir cosas que el compilador ya sabe. Como todos los tipos se deducen únicamente en la fase de compilación, el tiempo de compilación aumenta ligeramente pero no afecta el tiempo de ejecución del programa.

Para obtener más información, consulte Coches en C++

46. ​​Defina el espacio de nombres en C++.

Los espacios de nombres nos permiten organizar elementos con nombre que de otro modo tendrían un alcance global en ámbitos más pequeños, lo que nos permite darles un alcance de espacio de nombres. Esto permite que las partes del programa se organicen en distintos ámbitos lógicos con nombres. El espacio de nombres proporciona un lugar para definir o declarar identificadores como variables, métodos y clases.

O podríamos decir que un espacio de nombres es una zona declarativa que proporciona un alcance a los identificadores (nombres de tipos, funciones, variables, etc.) dentro de él. Los espacios de nombres se utilizan para organizar el código en categorías lógicas y evitar conflictos de nombres, lo que puede ocurrir cuando tiene muchas bibliotecas en su base de código.

Para obtener más información, consulte Espacio de nombres en C++

47. ¿Cuándo se utiliza el tipo de retorno void()?

La palabra clave void, cuando se usa como tipo de retorno de función, indica que la función no devuelve un valor. Cuando se usa como lista de parámetros para una función, void indica que la función no toma parámetros. Las funciones que no devuelven valor también se conocen como funciones nulas. Se llaman nulos porque no están diseñados para devolver nada. Es cierto, pero sólo parcialmente. No podemos devolver valores de funciones nulas, pero ciertamente podemos devolver algo. Aunque las funciones nulas no tienen tipo de retorno, pueden devolver valores.

concatenación de cadenas java

Para obtener más información, consulte Tipo de devolución nula .

48. ¿Cuál es la diferencia entre copia superficial y copia profunda?

Copia superficial

Copia profunda

En la copia superficial, se almacena una copia del objeto original y finalmente solo se copia la dirección de referencia. En términos simples, la copia superficial se duplica lo menos posible.En la copia profunda, se almacenan la copia del objeto original y las copias repetitivas. En términos simples, la copia profunda lo duplica todo.
Una copia superficial de una colección es una copia de la estructura de la colección, no de los elementos. Con una copia superficial, dos colecciones ahora comparten elementos individuales.Una copia profunda de una colección son dos colecciones con todos los elementos de la colección original duplicados.
Una copia superficial es más rápidaLa copia profunda es comparativamente más lenta.

Para obtener más información, consulte Copia superficial VS copia profunda

49. ¿Podemos llamar a una función virtual desde un constructor?

Sí, podemos llamar a una función virtual desde un constructor. Pero puede generar una excepción de anulación.

50. ¿Qué son los punteros nulos?

Al igual que su nombre, un puntero vacío es un puntero que no está asociado con nada ni con ningún tipo de datos. Sin embargo, un puntero vacío puede contener el valor de dirección de cualquier tipo y se puede convertir de un tipo de datos a otro.

Para obtener más información, consulte Puntero vacío en C++

Pregunta extra:

Qué es ' este '¿puntero en C++?

este El puntero permite que cada objeto tenga acceso a su propia dirección a través de un puntero esencial. Todas las funciones miembro toman este puntero como argumento implícito. este puntero puede usarse para referirse al objeto que llama dentro de una función miembro.

  • este El puntero se utiliza para pasar un objeto como parámetro a otro método.
  • Cada objeto obtiene su propia copia del miembro de datos.
  • este El puntero se utiliza para declarar indexadores.

Para obtener más información, consulte este puntero en C++