Se uma função não retornar nenhum valor, com um tipo de retorno válido, é aceitável que o compilador jogue lix
Se uma função tiver um tipo de retorno diferente devoid
, e a função não retorna nada, acho que o compilador retorna um valor de lixo (possivelmente visto como um valor não inicializado). Isso acontece no momento da compilação, então por que não deveria gerar um erro?
Por exemplo
int func1() {
return; // error
}
int func2() {
// does not return anything
}
O segundofunc2
deve gerar um erro, mas isso não ocorre. Existe uma razão para isso? Meu pensamento era tal que, ele pode ser visto como um valor não inicializado; portanto, se precisarmos lançar um erro no segundo caso, precisamos gerar um erro, se um valor não for inicializado, digamos
int i; // error
int i = 6; // okay
Alguns pensamentos, ou esta é uma pergunta duplicada? Eu aprecio sua ajuda