O que significa o modificador constante após uma declaração de método - página 2

 
Vasiliy Sokolov:
O método constante é outro exemplo do provérbio "queríamos fazer melhor, mas acabou sendo o mesmo de sempre". Acho que este é um lema para C++ em tudo. Não há nenhum uso prático, mas complica significativamente a concepção de programas OOP porque é necessário controlar constantemente o tipo de objeto que está sendo modificado (ele também deve ser constante).

Posso lhe dar um exemplo do que você escreveu sobre?

 
Vasiliy Sokolov:
O método constante é apenas mais um exemplo do provérbio "Queríamos coisas melhores, mas acabou como sempre". Acho que é um lema para C++ em tudo. Não tem utilidade prática, mas complica significativamente o projeto dos programas OOP porque é preciso controlar constantemente o tipo do objeto que está sendo modificado (também deve ser constante).

))) Tenho um velho livro Stroustrup por aí, se assaltantes invadirem a casa eu posso espancá-los com ele, ele pesa como um tijolo )) O velho teve tanta dificuldade com sua língua.

Lembro-me há muito tempo atrás, fui perseguido em uma entrevista de emprego, eles me fizeram uma pergunta e eu não consegui responder com precisão. Eles me trouxeram um livro como este, eu o li, e perguntei: "Você mesmo o usa?

Eu perguntei - Você mesmo a usa? - Os rapazes estão rindo, tudo bem, ninguém ainda respondeu corretamente a esta pergunta, pois ninguém a usa.

A propósito, eu tenho um livro sobre as vantagens do início dos anos 90, antes da adoção do primeiro padrão. Um livro de bolso digerível normal. Mas então Ostap se deixou levar ))

 
Alexey Kozitsyn:

Posso ter um exemplo do que você escreveu sobre?

Alexey escreveu um exemplo. Um método constante não pode mudar seus membros de classe. Qual parece ser o problema? Apenas não use o modificador constante. Mas depois há dificuldades na herança (especialmente dabiblioteca padrão): o designer definiu o método virtual const, mas na classe derivada, o método precisa mudar algo em seus dados - e há um plug por causa do const. Sem ele, o método não será anulado e, com ele, o método derivado não pode alterar seus próprios dados de classe.

Qual é o principal erro ao introduzir um modificador desse tipo para métodos de classe? O princípio principal da herança é violado: especialização e refinamento. A classe base proíbe o método de classe derivada de trabalhar com seus dados internos. E não deveria haver tal situação.

 
Vasiliy Sokolov:

Sharpe tresanda a uma milha de distância ))

Não há nada obstruindo, não há necessidade de blather on.

 
Комбинатор:

Sharpe tresanda a uma milha de distância ))

Não estou negando. Sharpe é realmente uma linguagem perfeita, ótima e bonita.

Combinador:

Const não complica nada, não blá, blá, blá

Ok, digamos que sempre se pode livrar da const. Mas por que você não explica brevemente pelo exemplo, o que const faz? Qual é a sua real utilidade? Por exemplo, e de preferência não escrito do nada.

 
Const é uma das metáforas marcantes do C++: primeiro você coloca diligentemente armadilhas elaboradas em todo o código e depois sai de suas próprias armadilhas - esse é todo o processo de programação do C++.
 
Vasiliy Sokolov:

...

Qual é o principal erro ao introduzir tal modificador para métodos de classe? O princípio principal da herança é violado: especialização e refinamento. A classe base proíbe os métodos de classe derivados de trabalhar com seus dados internos. Mas não deve haver tal coisa.

Talvez seja alguma parte que é passada dos criadores para os usuários simples. Como a função inicial no Expert Advisor e nas variáveis Bid and Ask.

Quando você mesmo faz tudo, não faz sentido se preocupar com todos os tipos de constantes.

 
Vasiliy Sokolov:

Não estou negando. Sharp é de fato uma linguagem perfeita, grande e bonita.

...

Ótimo. Mas está muito longe de ser perfeito.
 
Dmitry Fedoseev:
Ótimo. Mas está muito longe de ser perfeito.
O Sharp é bom, não por causa de nenhum gênio que o fez, mas porque é o último. Antes disso, durante 30 anos eles tentaram matar com ancinhos de vários tamanhos e configurações fantasiosas. O C++ foi um maravilhoso campo de testes para ele. Depois que todos foram mortos, os caras da Microsoft acabaram de espirrar de.... adotou os conceitos experimentados e testados e criou uma linguagem sintaticamente limpa a partir do zero.
 
A propósito, a MetaQuotes também teve uma boa chance de "desenvolver" gradualmente o MQL5 em um monstro parecido com um Robe a la C++. Mas o conhecimento profundo em C++ (onde deve ter havido suor, lágrimas e ódio) os fez perceber que não deveriam seguir os conselhos dos programadores do fórum da velha guarda C++. É por isso que agora temos uma linguagem de programação sintaticamente limpa e mais ou menos estritamente tipificada. É até incrível que tenhamos conseguido criar um doce assim, com base em um legado completamente monstruoso. O domínio não pode ser perdido, como dizem.