Qué significa el modificador const después de una declaración de método - página 2

 
Vasiliy Sokolov:
El método constante es otro ejemplo del proverbio "queríamos hacerlo mejor, pero resultó ser lo mismo de siempre". Creo que este es un lema para C++ en absoluto. No tiene ninguna utilidad práctica, pero complica significativamente el diseño de los programas OOP, ya que es necesario controlar constantemente el tipo de objeto que se modifica (también debe ser constante).

¿Puedo darle un ejemplo de lo que ha escrito?

 
Vasiliy Sokolov:
El método constante no es más que otro ejemplo del proverbio "queríamos que las cosas fueran mejor, pero resultó como siempre". Creo que es un lema para C++ en absoluto. No tiene ninguna utilidad práctica, pero complica notablemente el diseño de los programas de POO porque hay que controlar constantemente el tipo del objeto que se modifica (también debe ser constante).

))) Tengo un viejo libro de Stroustrup por ahí, si los ladrones entran en la casa, puedo golpearlos fácilmente con él, pesa como un ladrillo )) El viejo puso tanto problema en su lengua...

Recuerdo que hace mucho tiempo me persiguieron en una entrevista de trabajo por el lado positivo, me hicieron una pregunta y no pude responderla con precisión. Me trajeron un libro así, lo leí y pregunté: "¿Lo usas tú?

Pregunté, -¿Lo usas tú? -Los chicos se ríen, está bien, nadie ha respondido correctamente a esta pregunta, ya que nadie lo usa.

Por cierto, tengo un libro sobre pluses de principios de los 90, antes de que se adoptara la primera norma. Un libro de bolsillo de digestión normal. Pero entonces Ostap se dejó llevar ))

 
Alexey Kozitsyn:

¿Puede darme un ejemplo de lo que ha escrito?

Alexey escribió un ejemplo. Un método constante no puede modificar los miembros de su clase. ¿Cuál parece ser el problema? Simplemente no utilices el modificador const. Pero entonces hay dificultades en la herencia (especialmente desde labiblioteca estándar): el diseñador definió el método virtual const, pero en la clase derivada, el método necesita cambiar algo en sus datos - y hay un tapón debido a const. Sin ella, el método no será anulado, y con ella, el método derivado no puede cambiar los datos de su propia clase.

¿Cuál es el principal error al introducir dicho modificador para los métodos de la clase? Se viola el principio fundamental de la herencia: la especialización y el refinamiento. La clase base prohíbe al método de la clase derivada trabajar con sus datos internos. Y no debería existir tal situación.

 
Vasiliy Sokolov:

Sharpe apesta a una milla de distancia ))

No hay nada que obstruya, no hay necesidad de hablar.

 
Комбинатор:

Sharpe apesta a una milla de distancia ))

No lo niego. Sharpe es realmente una lengua perfecta, grande y hermosa.

Combinador:

Const no complica nada, no blah-blah

Vale, digamos que uno siempre puede deshacerse de la const. Pero, ¿por qué no explicas brevemente con un ejemplo, qué hace Const? ¿Cuál es su verdadera utilidad? Con el ejemplo, y preferiblemente no escrito de la nada.

 
Const es una de las metáforas más llamativas de C++: primero colocas diligentemente elaboradas trampas por todo el código, y luego sales de tus propias trampas - ese es todo el proceso de la programación en C++.
 
Vasiliy Sokolov:

...

¿Cuál es el principal error de introducir un modificador de este tipo para los métodos de la clase? Se viola el principio fundamental de la herencia: la especialización y el refinamiento. La clase base prohíbe a los métodos de la clase derivada trabajar con sus datos internos. Pero no debe haber nada de eso.

Tal vez sea una parte que pasa de los creadores a los simples usuarios. Como la función de inicio en el Asesor Experto y las variables de oferta y demanda.

Cuando lo haces todo tú mismo, no tiene sentido molestarse con todo tipo de const.

 
Vasiliy Sokolov:

No lo niego. Sharp es, en efecto, una lengua perfecta, grande y hermosa.

...

Genial. Pero está muy lejos de ser perfecto.
 
Dmitry Fedoseev:
Genial. Pero está muy lejos de ser perfecto.
El Sharp es bueno, no por los genios que lo hicieron, sino porque es el último. Antes de eso, durante 30 años se intentó matar con rastrillos de diversos tamaños y configuraciones fantasiosas. C++ fue un maravilloso campo de pruebas para ello. Después de que todo el mundo fue asesinado, los chicos de Microsoft simplemente se escabulleron .... adoptó los conceptos probados y creó un lenguaje sintácticamente limpio desde cero.
 
Por cierto, MetaQuotes también tuvo una buena oportunidad de "desarrollar" gradualmente MQL5 hasta convertirlo en un monstruo tipo Robe a la C++. Pero los conocimientos profundos en C++ (en los que debió de haber sudor, lágrimas y odio) les hicieron darse cuenta de que no debían seguir los consejos de los programadores de C++ de la vieja escuela del foro. Por eso ahora tenemos un lenguaje de programación sintácticamente limpio y más o menos estrictamente tipificado. Es incluso sorprendente que hayamos conseguido crear un caramelo así, basado en un legado completamente monstruoso. La maestría no se puede perder, como se dice.