Um construtor por defeito tem um objectivo específico de inicialização de um conjunto de objectos da sua classe. Um construtor com todos os seus parâmetros definidos por defeito não é um computador por defeito. Aqui
A propósito, porque é que este construtor não é um construtor por defeito? Outra muleta?
Muito pelo contrário. A muleta está a ter parâmetros padrão, uma vez que é uma fonte de bugs difíceis de encontrar. É aqui que estamos a ser rigorosos.
Se escrever um construtor com parâmetros, também é capaz de escrever um construtor sem parâmetros. E se tiver um construtor padrão, não pode escrever um construtor paramétrico com todos os parâmetros padrão.
Estou a tentar passar os valores dos membros de uma classe para outra "por referência" e utilizando um descritor. Ambas as opções parecem funcionar. Aqui está o esquema mais simples:
class B
{
private:
double d1;
public:
B(double &d) { d1=d; Print("class B, double d1=",d1); };
~B(void){};
};
class A
{
public:
double double_var;
A *pointerA;
A(void) : double_var(1.234567),pointerA(NULL) { SetPointer(); };
~A(void) {if(CheckPointer(pointerA)==POINTER_DYNAMIC) delete pointerA; };
private:
void SetPointer(void) { pointerA=GetPointer(this); }
};
class C
{
public:
A *pointerA_C;
public:
C(void) : pointerA_C(NULL) {};
~C(void) {if(CheckPointer(pointerA_C)==POINTER_DYNAMIC) delete pointerA_C;};
void Printer() {if(CheckPointer(pointerA_C)!=POINTER_INVALID) Print("class C, double =",pointerA_C.double_var); };
};
voidOnStart()
{
A objA;
//---передаём значение double-переменной по ссылке
B objB(objA.double_var);
//---передаём значение double-переменной через описатель
C objC;
objC.pointerA_C=objA.pointerA;
objC.Printer();
}
Qual destes dois métodos funciona mais rapidamente? O que é mais preferível?
Estou a tentar passar os valores dos membros de uma classe para outra "por referência" e utilizando um descritor. Ambas as variantes parecem funcionar. Aqui está o esquema mais simples:
Qual destes dois métodos funciona mais rapidamente? O que é mais preferível?
As perguntas são realmente pesadas/incorretas?
Durante muito tempo utilizei a primeira via ("seguindo a ligação"), mas gosto muito da ideia dos descritores. Só não sei se vale a pena reescrever todas as aulas por causa disso.
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.
Um construtor com todos os seus parâmetros definidos como padrão não é um computador padrão. Tut.
Destaquei um lapso a vermelho.
A propósito, porque é que um construtor deste tipo não é um construtor por defeito? Outra muleta?
Um construtor por defeito tem um objectivo específico de inicialização de um conjunto de objectos da sua classe. Um construtor com todos os seus parâmetros definidos por defeito não é um computador por defeito. Aqui
"Invalid pointer access" =="Tentativa de acesso a um ponteiro inválido"?
Muitas vezes um sinal directo de uma mão má ou falta de compreensão dos princípios básicos de trabalhar com apontadores.
Menos frequentemente um sinal de uso de classe mal documentado.
A propósito, porque é que este construtor não é um construtor por defeito? Outra muleta?
Muito pelo contrário. A muleta está a ter parâmetros padrão, uma vez que é uma fonte de bugs difíceis de encontrar. É aqui que estamos a ser rigorosos.
Se escrever um construtor com parâmetros, também é capaz de escrever um construtor sem parâmetros. E se tiver um construtor padrão, não pode escrever um construtor paramétrico com todos os parâmetros padrão.
É uma muleta ter parâmetros por defeito, pois esta é uma fonte de bugs difíceis de apanhar.
Sim, de alguma forma não consigo pensar em nenhuma dessas situações.
E se houver um construtor padrão, não se pode escrever um construtor paramétrico com todos os parâmetros padrão.
Li sobrea operação de resolução de contexto ( :::: ). Decidi tentar utilizá-lo em duas classes não relacionadas:
O compilador dá um erro na linha C_A::funcA(j). Se eu o comentar, parece funcionar. Qual é o meu erro?
Li sobrea operação de resolução de contexto ( :::: ). Decidi tentar utilizá-lo em duas classes não relacionadas:
O compilador gera um erro na linha C_A::funcA(j). Se eu o comentar, parece funcionar. Qual é o meu erro?
No seu caso, o contexto da classe C_A não está disponível a partir da classe C_B.
Só é correcto se:
Mas depois pode:
Em geral, tais chamadas são utilizadas para métodos sobrecarregados:
Aproximadamente assim.
No seu caso, o contexto da classe C_A não está disponível a partir da classe C_B.
Estou a tentar passar os valores dos membros de uma classe para outra "por referência" e utilizando um descritor. Ambas as opções parecem funcionar. Aqui está o esquema mais simples:
Qual destes dois métodos funciona mais rapidamente? O que é mais preferível?
Estou a tentar passar os valores dos membros de uma classe para outra "por referência" e utilizando um descritor. Ambas as variantes parecem funcionar. Aqui está o esquema mais simples:
Qual destes dois métodos funciona mais rapidamente? O que é mais preferível?
As perguntas são realmente pesadas/incorretas?
Durante muito tempo utilizei a primeira via ("seguindo a ligação"), mas gosto muito da ideia dos descritores. Só não sei se vale a pena reescrever todas as aulas por causa disso.