"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > As funções de membro embutidas podem ser implementadas em um arquivo .cpp?

As funções de membro embutidas podem ser implementadas em um arquivo .cpp?

Publicado em 2024-11-18
Navegar:792

 Can Inline Member Functions Be Implemented in a .cpp File?

Funções de membro inline em C: um mergulho mais profundo

As funções de membro inline são declaradas na definição da classe, mas implementadas fora do corpo da classe. Embora normalmente residam no arquivo de cabeçalho, pode haver situações em que não seja viável colocar a implementação no cabeçalho.

Considere o cenário em que a classe A inclui uma instância da classe B e a classe B declara um membro embutido função getA() que retorna uma instância de A. Devido a uma inclusão circular, somos forçados a mover a implementação de getA() para o arquivo B.cpp.

Surge a pergunta: o compilador estará embutido obterA()? De acordo com o C FAQ, a definição de uma função inline deve estar em um arquivo de cabeçalho, exceto se for usada exclusivamente em um único arquivo .cpp. No nosso caso, a definição está em B.cpp, o que significa que getA() não será inline, exceto para seu uso dentro do próprio B.cpp.

Quanto ao significado das palavras-chave inline, é recomendado usar apenas aquele na definição da função fora do corpo da classe para melhores práticas.

Quanto a encontrar uma abordagem alternativa para definir funções de membro embutidas em um arquivo .cpp, infelizmente, não há nenhuma conhecida de nosso conhecimento. A definição deve residir em um arquivo de cabeçalho para que o compilador execute o inlining.

Tutorial mais recente Mais>

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