cpp-best-practices / cpp-best-practices/cppbestpractices

Const as Much as Possible (Not!)

Aberta
#128 3 comentários 3 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Sem dados de linguagem
Estrelas
8.8k
Forks
902
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

While "Const as Much as Possible" is generally good practice, `const` should not be directly used on function declaration parameters, including member functions.

A quick example:

```
void foo (int x);
void foo (int const x) {return x * 2;}

void bar (char const * s);
void bar (char const * const s) {puts(s);}
```

Notice I said "directly". Hence `s` isn't `const` in the declaration, but is in the definition (direct), but what `s` points at is `const` in both, and must match in both (indirect).

The reason for doing this is to not leak a function's implementation details. Because whether a function treats a parameter variable as `const` or not is an implementation detail of the function. And if a function gets modified such that its parameter is no longer treated as `const`, then callers of that function shouldn't have to be recompiled.

This is a difference between C and C++. In C, the function definition's parameter type(s) must exactly match that of the function declarations. (At least it used to. I haven't actually developed anything significant with modern C.)

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Direção de pesquisa

Nenhum arquivo ou teste é nomeado na issue. Comece localizando a seção de best practices que aborda parâmetros de função const e, em seguida, compare suas orientações com os exemplos em C e C++ do relatório; considera-se concluído quando a documentação distinguir claramente a constness direta dos parâmetros da constness dos dados apontados.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
cpp
Domínio
documentation
Tipo de issue
Documentação
Dificuldade
2/5
Tempo estimado
1-3 horas
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
35/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.