Articles of const

Por que os membros const devem ser inicializados no inicializador do construtor e não em seu corpo?

Por que os membros da class devem ser declarados como const inicializados na lista de inicializadores do construtor, e não no corpo do construtor? Qual é a diferença entre os dois?

Diferença entre referência const e parâmetro normal

void DoWork(int n); void DoWork(const int &n); Qual é o diff

Como evitar a duplicação de código implementando iteradores const e non-const?

Estou implementando um contêiner personalizado com uma interface semelhante a STL. Eu tenho que fornecer um iterador regular e um constante iterador. A maior parte do código para as duas versões dos iteradores é idêntica. Como posso evitar essa duplicação? Por exemplo, minha class de contêiner é Foo e estou implementando FooIterator e FooConstIterator . […]

Regra fácil de ler declarações const complicadas?

Para ler declarações complexas de pointers, existe a regra da direita para a esquerda . Mas esta regra não menciona como ler modificadores de const . Por exemplo, em uma declaração de ponteiro simples, const pode ser aplicado de várias maneiras: char *buffer; // non-const pointer to non-const memory const char *buffer; // non-const pointer […]

Como funciona a sobrecarga de funções const e non-const?

O stl está cheio de definições como esta: iterator begin (); const_iterator begin () const; Como o valor de retorno não participa da resolução de sobrecarga, a única diferença aqui é a function sendo const . Isso é parte do mecanismo de sobrecarga? Qual é o algoritmo do compilador para resolver uma linha como: vector::const_iterator […]

Constante de nível superior não influencia uma assinatura de function

Do C ++ Primer 5th Edition, diz: int f(int){ /* can write to parameter */} int f(const int){ /* cannot write to parameter */} As duas funções são indistinguíveis . Mas como você sabe, as duas funções realmente diferem em como elas podem atualizar seus parâmetros. Alguém pode me explicar? EDITAR Acho que não interpretei […]

__attribute __ ((const)) __attribute __ ((pure)) no GNU C

Qual é a diferença entre __attribute__((const)) e __attribute__((pure)) no GNU C? __attribute__((const)) int f() { /* … */ return 4; } vs __attribute__((pure)) int f() { /* … */ return 4; }

O compilador deve sugerir / avisar ao passar instâncias de objects diretamente como parâmetros da interface const?

O compilador deve sugerir / avisar ao passar uma nova instância de um object para um método que tenha um parâmetro de interface const de uma interface que a class do object implementa? Edit : A amostra do curso é simples para ilustrar o problema. Mas, na vida real, fica muito mais complexo: e se […]

C / C ++ alterando o valor de um const

Eu tinha um artigo, mas perdi. Ele mostrou e descreveu alguns truques de C / C ++ que as pessoas deveriam ter cuidado. Um deles me interessou, mas agora que estou tentando replicar, não estou conseguindo colocá-lo para compilar. O conceito era que é possível alterar acidentalmente o valor de um const em C / […]

Retornando uma referência const para um object em vez de uma cópia

Embora refatorando algum código, encontrei alguns methods getter que retornam um std :: string. Algo parecido com isto, por exemplo: class foo { private: std::string name_; public: std::string name() { return name_; } }; Certamente o getter seria melhor retornar um const std::string& ? O método atual está retornando uma cópia que não é tão […]