ccppbrasil | Unsorted

Telegram-канал ccppbrasil - C/C++/42 Império do Brasil

1184

1) Não pode mandar Bom dia/tarde/noite. 2) Stickers e off-topics são permitidos com parcimônia. 3) Adhominem são proibidos. Quem abusar dessas regras, toma um delete. Se abusar demais, toma um delete de todo o histórico do usuário. De resto, vale tudo.

Subscribe to a channel

C/C++/42 Império do Brasil

voltando... duas etapas

Читать полностью…

C/C++/42 Império do Brasil

quando o construtor é chamado, ele é “chamado em duas etapas”

Читать полностью…

C/C++/42 Império do Brasil

aí beleza, chegou a hora de chamar o construtor da tua classe de fato

Читать полностью…

C/C++/42 Império do Brasil

não exatamente, mas você vai visualizar melhor o que está acontecendo quando tiver noção da pilha (stack) de execução

Читать полностью…

C/C++/42 Império do Brasil

isso é o que é chamado de stack?

Читать полностью…

C/C++/42 Império do Brasil

apenas quando os construtores de todas as classes-mãe são chamados, é que o construtor da classe derivada é chamado

Читать полностью…

C/C++/42 Império do Brasil

o construtor da classe-mãe (Pokemon nesse caso) é chamado *antes* do construtor da classe derivada

Читать полностью…

C/C++/42 Império do Brasil

então a classe Pokemon tem espaço para 4 bytes (1 enum na arquitetura que tirei da minha cabeça agora), e qualquer classe que herdar de Pokemon vai ter esses 4 bytes + o espaço para quaisquer membros-extras que você declarar

class Togerpir : public Pokemon
{
int dias_de_vida;
};


nesse caso você fazer:

Togerpir n01;


Está reservando 8 bytes de memória

Читать полностью…

C/C++/42 Império do Brasil

no final você só está “reservando” espaço para N bytes

Читать полностью…

C/C++/42 Império do Brasil

coloca um print no corpo do construtor de Pokemon, e você verá que a variável tipo, herdada de Pokemon, já foi inicializada:

class Charmander : public Pokemon
{
Pokemon()
{
std::cout << tipo << std::endl;
}
};

Читать полностью…

C/C++/42 Império do Brasil

então você não precisa fazer:

Display display = Display();


porque o compilador já colocou o código pra chamar o construtor pra inicializar sua variável

Читать полностью…

C/C++/42 Império do Brasil

o construtor da classe é chamado pra inicializar a variável

Читать полностью…

C/C++/42 Império do Brasil

int x = 0;

Читать полностью…

C/C++/42 Império do Brasil

se for tipo primitivo, e estiver na stack, tá pegando lixo

Читать полностью…

C/C++/42 Império do Brasil

acho que esse nome, “instanciar”, é mais de Java

Читать полностью…

C/C++/42 Império do Brasil

(considere que todos os construtores das classes-mãe já foram chamados, porque tudo isso que vou falar agora acontece depois)

Читать полностью…

C/C++/42 Império do Brasil

class Eren : class Titan
{
Eren()
: nome{"Eren Jagger"}
/* aqui é a lista de inicialização */
{
// aqui é o corpo do construtor
}

std::string nome;
};

Читать полностью…

C/C++/42 Império do Brasil

mas é bom saber como funciona em c++ tb

Читать полностью…

C/C++/42 Império do Brasil

é bom saber, pq eu sei o conceito de herança das outras linguagens (que eu falei, js, ts, python, etc)

Читать полностью…

C/C++/42 Império do Brasil

se você não está usando herança, não precisa se preocupar com isso (mas deveria aprender depois de qualquer forma)

Читать полностью…

C/C++/42 Império do Brasil

o construtor da classe-mãe vai inicializar os membros da classe-mãe

Читать полностью…

C/C++/42 Império do Brasil

eu queria usar cores e uns desenhos, mas o Telegram não deixa

Читать полностью…

C/C++/42 Império do Brasil

Essa é a sintaxe para herança correto?

Читать полностью…

C/C++/42 Império do Brasil

struct e class é só um jeito de declarar um agregado de bytes e dar alguma semântica a isso

Читать полностью…

C/C++/42 Império do Brasil

Quando o construtor é chamado, aí tem uma ordem de inicialização que é bem fácil de entender. Primeiro, as classes-base são inicializadas. Por exemplo:

class Pokemon
{
enum { NORMAL, AGUA, FOGO, ABERRACAO } tipo = NORMAL;
};

class Charmander : public Pokemon
{
Pokemon() {}
};

Читать полностью…

C/C++/42 Império do Brasil

ahh pode crer.. eu venho de linguagem web (js, ts, python, etc)...

Читать полностью…

C/C++/42 Império do Brasil

se não for um tipo primitivo (ex.: uma classe), aí a inicialização é diferente

Читать полностью…

C/C++/42 Império do Brasil

então, via de regra, você sempre inicializa tipos primitivos com algum valor útil pra não pegar lixo de memória

Читать полностью…

C/C++/42 Império do Brasil

você quer inicializar a variável

Читать полностью…

C/C++/42 Império do Brasil

os efeitos da inicialização dependem do tipo de inicialização, do tipo da variável, e de “onde a variável foi declarada” (entre aspas porque a explicação tecnicamente correta é mais longa e desnecessária nesse momento)

Читать полностью…
Subscribe to a channel