Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Esto significa que tienes que crear una instancia utilizando el operador new.
Hay una cosa que no entiendo. ¿Qué buenas razones hay para forzar el uso del nuevo operador? ¿Está bien sin ella?
Es necesario si se quieren crear objetos de forma dinámica. Si no se sabe de antemano cuántos objetos y qué tipos de objetos se van a necesitar.
Так я вот одного не пойму. Какие веские причины принуждают к использованию оператора new ? Без него типа никак?
Es necesario si necesitas crear objetos de forma dinámica. Si no se sabe de antemano cuántos objetos y qué tipos de objetos se necesitan.
Puede utilizar matrices de clases dinámicas. En MQL esto funcionará. En C++, puede haber problemas con la inicialización de los miembros de la clase. Por eso es mejor poner un puntero inteligente en el array. Para no tener que lidiar con la inicialización de la clase y la limpieza de la memoria.
¿Cómo se "lee" esta construcción?
Ah, en particular:
Lo estoy mirando y no entiendo lo que está pasando...¿Cómo se "lee" esta construcción?
ptr se convierte a tipo (clase) cFather y se llama a sumétodo (cFather ) GetData()
algo así...
ptr se convierte a tipo (clase) cFather y se llama a sumétodo (cFather ) GetData()
algo así...
Eso es algo raro... Lo pensé aproximadamente, pero... es demasiado para ser lanzado a un tipo (clase). De todas formas, en programación, por lo que he oído, no es recomendable hacer castings a un tipo (clase). Pero no se trata sólo de una conversión de tipo estándar, sino de una conversión de clase.
Bien, volvamos a este código una vez más:
Aquí en los parámetros del prototipo de la función f podemos ver claramente que la función f toma un método de la clase cPadre en sus parámetros. Además, vemos la siguiente situación en el código START:
f(ptr); // вернет 3
Aquí es donde la función f toma un puntero a la clase cChild, en lugar de un método de la clase cFather. Desde cChild obj, *ptr = GetPointer( obj );
¿Cuál es la lógica de esto?
mm... ¿lógica dónde?
en el método f(), creo que la lógica es que el parámetro entrante se procese correctamente para cFather (o sus descendientes)
mm... ¿lógica dónde?
en el método f(), creo que la lógica es que el parámetro entrante se maneje correctamente para cFather (o sus sucesores)
Es decir
aquí *p es un puntero a cFather?
Al mismo tiempo, estoy estudiando C++ y estoy un poco confundido por un vocabulario similar. Sin embargo, los punteros no son lo mismo aquí.
Es decir
aquí *p es un puntero a cFather?
Al mismo tiempo, estoy estudiando C++ y estoy un poco confundido por un vocabulario similar. Sinembargo, los punteros no son los mismos.
Hace un par de semanas que no tengo ninguna pregunta. Decidí preguntarlo. No es demasiado complicado, pero lógicamente me pregunto si es una opción. Aquí está el código:
Sólo hay 2 funciones públicas en este código:
Y las 2 funciones privadas son llamadas directamente a través de la función pública, o mejor dicho, la función pública, en el momento de la necesidad. Lo interesante es que la función void SetName(string n) tiene el parámetro n, pero ambos métodos privados: string GetFirstName(string full_name) y string GetLastName(string full_name) por alguna razón no tienen el mismo parámetro. Aunque si tomas este mismo código (no el otro), los métodos privados son llamados a través de los públicos con los mismos parámetros y no hay otra forma. Entonces, ¿por qué debería dar nombres diferentes a los parámetros?
Espero que la pregunta esté clara.