Em C , os membros dos dados da classe não podem ser inicializados usando a sintaxe de inicialização direta, (), conforme visto no exemplo a seguir :
#includeclass test { public: void fun() { int a(3); std::cout A compilação falha com erros:
11 9 [Error] expected identifier before numeric constant 11 9 [Error] expected ',' or '...' before numeric constantPor que esse é o caso?
O padrão C proíbe explicitamente esta sintaxe para inicialização do membro de dados da classe. As primeiras propostas para a introdução do recurso citaram problemas de análise como o motivo.
Considere este exemplo ambíguo:
struct S { int i(x); // data member with initializer or... // ... static int x; int i(y); // member function declaration // ... typedef int y; };O padrão propõe uma solução:
Para eliminar ambiguidade, o padrão C permite apenas a seguinte sintaxe para inicialização de membros de dados de classe:
- = cláusula inicializadora
- { lista inicializadora }
Esta resolução garante clareza e evita o potencial de mal-entendidos nos casos em que uma declaração pode se parecer tanto com um objeto quanto com uma função declaração.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3