Erros, bugs, perguntas - página 1057
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
A carteira é apenas um caso especial. E ninguém a impede de ser colocada na parte privada.
Num outro caso, pode ser necessário aceder à variável de classe mãe do objecto de outra pessoa.
E isto cabe ao programador decidir se o permite ou não. E o compilador deve garantir que o programa funciona correctamente.
É essa a questão, se este caso muito diferente lhe ocorrer, significa que a sua arquitectura é conceptualmente errada e potencialmente perigosa.
Em C++, o conceito das chamadas classes amigáveis foi introduzido em algum momento de uma forma infeliz. É como se uma classe soubesse como outra classe está organizada, pode trabalhar em segurança com os seus dados internos. A prática da sua utilização por milhares de programadores em todo o mundo mostrou que é uma coisa perigosa, criando mais problemas do que resolvendo-os, pelo que é abandonada em linguagens modernas como Java e C#.
Esta característica foi desagradavelmente surpreendente. É definitivamente uma treta se o compilador permitir mudar o campo privado da instância de outra pessoa. Devemos afixá-lo no Service Desk.
Não compreendo: porque é que se quer limitar tanto?
Acha que tornará automaticamente o seu programa mais seguro?
Não o fará! Pelo contrário.
São as restrições desnecessárias que um dia o farão escrever dessa forma:
Sabe uma ou duas coisas sobre o OOP, mas ainda não o entendeu.
Veja:
É surpreendente que tenha fechado a variável "carteira", apesar de a ideia original da classe ser a de disponibilizar a sua carteira a todos? Mas se todos levarem o quanto quiserem, perderemos dinheiro e isso é impossível. Agora a função GetMoney permite-o, mas depois de adicionar várias linhas, não vai permitir levar mais dinheiro. Agora imagine que a classe Maecenas é acedida por dezenas de diferentes objectos que pedem dinheiro. Se a variável carteira for aberta, cada um destes objectos teria também de controlar (ou seja, ter a sua própria implementação) para verificar se têm dinheiro suficiente. E se pelo menos um deles não o fizer, corre o risco de obter um valor negativo em vez de zero, o que significaria que pediu dinheiro e acabou por ficar também a dever dinheiro.Amigo, vejo que sabe uma ou duas coisas sobre o OOP, mas ainda não tem a essência do assunto.
Veja:
É surpreendente que tenha fechado a variável "bolsa", apesar de a ideia original da classe ser a de disponibilizar a sua bolsa a todos? Mas se todos levarem o quanto quiserem, perderemos dinheiro e isso é impossível. Agora a função GetMoney permite-o, mas depois de adicionar várias linhas, não vai permitir levar mais dinheiro. Agora imagine que a classe Maecenas é acedida por dezenas de diferentes objectos que pedem dinheiro. Se a variável carteira for aberta, cada um destes objectos teria também de controlar (ou seja, ter a sua própria implementação) para verificar se têm dinheiro suficiente. E se pelo menos um deles não o fizer, corre o risco de obter um valor negativo em vez de zero, o que significaria que pediu dinheiro e acabou por ficar a dever dinheiro também.Eu não tinha nada contra a carteira privada. A conversa começou com isto:https://www.mql5.com/ru/forum/1111/page1072#comment_589657
Isto é correcto. A classe B acede à classe A externa e pretende que as variáveis protegidas da classe A lhe sejam disponibilizadas. Não compreendo a lógica aqui.
O que é que a lógica tem a ver com isto?
http://alenacpp.blogspot.com/2006/03/blog-post_11.html
O modificador protegido é uma puta. Raramente é realmente necessário.
O verdadeiro encapsulamento implica a privacidade dos dados.
Pode dizer-me se quer seleccionar o primeiro personagem no pos - devo colocar 1 ou 0 no pos? Está indexado como em arrays?
Pode dizer-me se quer seleccionar o primeiro personagem no pos - devo colocar 1 ou 0 no pos? Está indexado como em arrays?