"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 > Como acessar funções de amigos definidas em uma classe?

Como acessar funções de amigos definidas em uma classe?

Publicado em 2024-11-25
Navegar:369

How to Access Friend Functions Defined Within a Class?

Acessando funções de amigos definidas em uma classe

Ao trabalhar com funções de amigos, é essencial entender como elas são definidas e acessadas. Como as funções de amigo não são membros de uma classe, acessá-las fora da classe pode exigir considerações especiais.

No trecho de código fornecido:

class A {

public:
    friend void fun(A a){std::cout 

As funções amigas fun() e fun3() são definidas dentro da classe, mas não declaradas no escopo global. Embora fun() possa ser acessado diretamente usando pesquisa dependente de argumento (ADL) devido ao argumento do tipo A, fun2() não pode ser acessado sem uma declaração no escopo global.

Para acessar fun2() corretamente , ela deverá ser declarada globalmente além de ser definida como uma função amiga dentro da classe:

class A {

public:
    friend void fun(A a){std::cout 

Nesta versão modificada, fun2() pode ser acessada fora da classe como uma função comum.

No entanto, é recomendado definir funções de amigos da maneira usual, fora da classe, mas declaradas como amigos:

class A {
   friend void fun(A a);
   friend void fun2();
   friend void fun3();
};

void fun(A a) { std::cout 

Essa abordagem garante que todas as funções de amigos sejam definidas e declaradas corretamente, tornando-as acessíveis e utilizáveis ​​conforme pretendido.

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