Code | C++ Initialization Lists

Sabia da existência das Initialization lists em C++???
Se não, aqui está uma breve explicação, as initialization lists são uma forma diferente de inicializar inicializar os nossos membros de class, vejamos um exemplo com especial atenção ao método construtor.

class Something
{
private:
 int m_nValue;
 double m_dValue;
 int *m_pnValue = 0;

public:
 Something()
 {
 m_nValue = 0;
 m_dValue = 0.0;
 m_pnValue = 0;
 }
};

Agora vamos escrever o mesmo código mas desta vez vamos usar uma initialization list:

class Something
{
private:
int m_nValue;
double m_dValue;
int *m_pnValue = 0;

public:
Something() : m_nValue(0), m_dValue(0.0), m_pnValue(0)
{
}
};

[/soucecode]
A initialization list é inserida depois dos parâmetros do método construtor. iniciada com dois pontos(:), e depois coloca-se as variáveis para inicializar junto com o seu valor separados por virgula.
Anúncios

Code | Make a better use of preprocessor

Hello,
Today, on this new type of post, i will show you how you can make a better use of preprocessor.

I suppose you know of the existence of ‘#define’, you can write this in your program:

#define MY_NAME "Gil"
cout << "My name is " << MY_NAME << endl;

And the preprocessor converts to this:

cout << "My name is " << "Gil" << endl;

Now, and ‘# undef’? Did you know that?
You can undefine a previously defined value by using the #undef preprocessor directive.
Consider the following snippet:

#define MY_NAME "Gil"
cout << "My name is " << MY_NAME << endl;
#undef MY_NAME
cout << "My name is " << MY_NAME << endl;

The last line of the program causes a compile error because MY_NAME has been undefined.