Accessibility of data member in member function before declaration of data member
-
25-05-2021 - |
Pergunta
Consider this code:
class Test
{
public:
Test() { i = 0; }
private:
int i;
};
Data member 'i' is used even before it is declared/defined. Should this not be a compilation error ? (It compiled fine!!!)
Solução
The rule is that member functions defined in the class definition are compiled as if they were defined immediately after the class definition.
Outras dicas
No it shouldn't, within the context of the class definition, all members, data members or functions have complete visibility.
where is the data member used before declaration?
class Test
{
public:
Test() { i = 0; } // constructor
private:
int i; //datamemeber
};
main()
{
Test obj; // memory allocated only here
}
the constructor is called after only the obj is created in main. then the memory for i is allocated. and the the constructor is called so there is scope and visibility for i
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow