Para um círculo, ele é calculado de uma forma, para um quadrado de outra. Mas em ambos os casos - chamando Figura.GetSquare(),
Eu, por exemplo, acho difícil aprender a teoria, demonstrar um exemplo e descrever como a função define um círculo, quadrado, trapézio ou triângulo ???
VOLDEMAR, se você assume seu primeiro posto, por que há uma classe lá? As aulas de redação são uma consequência da complexidade do programa, quando os elementos individuais têm muitos links externos, então é criada uma classe para unir todos esses elementos e criar uma interface simples. Na minha opinião, um atributo necessário de uma classe são os dados (int's, double's ...) - material com o qual as funções funcionam, a classe conecta tudo em um pacote (dados e funções). Por exemplo, dois exemplos, primeiro sem o OOP, segundo com ele:
void sum(int &i1, int &i2, int val)
{
i1 += val;
i2 += val;
}
int get_number(int &i1, int &i2)
{
return i1 + i2;
}
void main() // главная функция программы
{
int i1, i2;
sum(i1, i2, 56);
any_fn(get_number(i1, i2)); // какое-то действие с нашей суммой.
}
class QQ
{
int i1;
int i2;
public:
void sum(int val)
{
this->i1 += val;
this->i2 += val;
}
int get_number()
{
returnthis->i1 + this->i2;
}
};
void main() // главная функция программы
{
QQ q;
q.sum(56);
any_fn(q.get_number()); // какое-то действие с нашей суммой.
}
No segundo exemplo, não temos que nos preocupar com dados que funcionarão, acho que este é o objetivo principal do OOP.
Eu tenho uma regra: nunca escreva um destrutor vazio. A ausência de um destruidor é um indicador de simplicidade de classe. Se um destrutor for escrito, você pode ter que escrever um construtor de cópias e o = operador ou proibi-los. Exemplo:
struct S {};
class QQ
{
S *p;
public:
QQ() {this->p = new S;}
~QQ() {deletethis->p;}
};
void main()
{
QQ q;
QQ q2 = q;
}
Isto fará com que a exclusão seja chamada duas vezes para o mesmo ponteiro. A maneira correta é esta
class QQ
{
S *p;
public:
QQ() {this->p = new S;}
~QQ() {deletethis->p;}
QQ(QQ &); // Только объявляем, определения нигде нет.
QQ &operator=(QQ &); // Только объявляем, определения нигде нет.
};
//илиclass QQ
{
S *p;
public:
QQ() {this->p = new S;}
~QQ() {deletethis->p;}
QQ(QQ &q) {this->p = new S(*q.p);}
QQ &operator=(QQ &q) {*this->p = *q.p;}
};
Então, se você tem que escrever um destruidor, é uma boa razão para pensar duas vezes - o que fazer com ópera = e copiador construtor? Apagá-lo, escrevê-lo...? Não acho que você deva escrever o destruidor vazio, sua ausência é um indicador de que você não precisa refazer o acima exposto.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Acrescente.
Eu acrescentei ))
Para um círculo, ele é calculado de uma forma, para um quadrado de outra. Mas em ambos os casos - chamando Figura.GetSquare(),
E silêncio ...
Bem, foi um 2x2=?
Não estou interessado em responder.
=================
Talvez isto esteja mais próximo.
Há um conjunto padrão de métodos virtuais em uma classe: Open(), Close(), Read(), Write() etc.
Essa classe pode lidar com arquivos, mapeamento, canais, internet, etc.
Somente o conteúdo (descrição) desses métodos será diferente. Mas a interface de classe será idêntica.
Você não acha que é suspeito que já é a terceira página sobre o assunto e ninguém citou um único ponto de código como exemplo?
Além disso, não é interessante responder, é elementar, é tão simples que é preguiçoso demais para codificar...
Se alguém soubesse de alguma coisa, acho que teria respondido...
VOLDEMAR, se você assume seu primeiro posto, por que há uma classe lá? As aulas de redação são uma consequência da complexidade do programa, quando os elementos individuais têm muitos links externos, então é criada uma classe para unir todos esses elementos e criar uma interface simples. Na minha opinião, um atributo necessário de uma classe são os dados (int's, double's ...) - material com o qual as funções funcionam, a classe conecta tudo em um pacote (dados e funções). Por exemplo, dois exemplos, primeiro sem o OOP, segundo com ele:
No segundo exemplo, não temos que nos preocupar com dados que funcionarão, acho que este é o objetivo principal do OOP.
Mais uma observação sobre seu código:
... class vr_trade { ... ~vr_trade(){} }; ...Eu tenho uma regra: nunca escreva um destrutor vazio. A ausência de um destruidor é um indicador de simplicidade de classe. Se um destrutor for escrito, você pode ter que escrever um construtor de cópias e o = operador ou proibi-los. Exemplo:
Isto fará com que a exclusão seja chamada duas vezes para o mesmo ponteiro. A maneira correta é esta
Então, se você tem que escrever um destruidor, é uma boa razão para pensar duas vezes - o que fazer com ópera = e copiador construtor? Apagá-lo, escrevê-lo...? Não acho que você deva escrever o destruidor vazio, sua ausência é um indicador de que você não precisa refazer o acima exposto.
Por que o segundo método lança um monte de erros e avisos ???
Coloque um ponto depois disto, em vez de ->. mql chip.
Por favor, explique as ações
a saber
por que o sinal (:) e o que ganhamos com ele?