(que pode alterar seu valor ao longo do programa)
Ou a 'instância de algo' está estritamente relacionada a classes e objetos? Se sim, como você definiria o conceito de 'variável' quando se trata de C ++?
(que pode alterar seu valor ao longo do programa)
Ou a 'instância de algo' está estritamente relacionada a classes e objetos? Se sim, como você definiria o conceito de 'variável' quando se trata de C ++?
Respostas:
Tanto quanto sei, é correto chamar valores de tipos primitivos de instâncias desse tipo (consulte, por exemplo, "C ++ Type System" , do manual do Visual Studio, mas ainda estou procurando outra fonte), embora eu acredite que esse termo seja usado principalmente ao discutir objetos. Um objeto é uma instância de uma classe C se ele foi construído a partir de um construtor definido na classe C ou em uma de suas subclasses.
Uma variável em C ++ não é um conceito de tempo de execução. Existe dentro do seu compilador como uma ligação lexical entre o nome da variável e um local abstrato (mutável se não const). Depois que um programa é compilado, as variáveis não estão mais lá. Em vez disso, os dados são lidos e gravados em registros, memória etc.
int
. O padrão C ++ não faz distinção entre tipos primitivos e não primitivos ao falar sobre o que as declarações de variáveis fazem. Portanto, T t;
declara um objeto do tipo T
, não importa que tipo T
seja.
Ou a 'instância de algo' está estritamente relacionada a classes e objetos? Se sim, como você definiria o conceito de 'variável' quando se trata de C ++?
Para colocá-lo da forma mais concisa possível para C ++
Só para ficar claro:
malloc()
buffer recém- editado, mas não inicializado: é uma área de memória que ainda não é um objeto. Da mesma forma, um objeto que foi destruído explicitamente: é uma região de memória que não é mais um objeto.
Bem, o que significa "correto"?
Se queremos ser super-rigorosos, precisamos distinguir entre:
Então, em seguida, uma variável de ser uma expressão-ia ter um tipo. Seu valor - o objeto a que se refere - seria uma instância de alguma classe. E observe que o tipo da variável e a classe do objeto geralmente não são a mesma coisa - o tipo estático da variável coloca um limite superior nas classes de tempo de execução dos objetos, de modo que as classes devem ser um subtipo da classe que corresponde ao tipo.
Você quer repetir esse bocado grande o tempo todo? Parreira não. Quão estritamente vs. vagamente queremos conversar depende do contexto. Muitas vezes, não há realmente nenhum problema em dizer que "a variável é uma instância desse tipo". O que está acontecendo realmente é que estamos usando a variável e o tipo metonimicamente para nos referirmos ao objeto e a uma superclasse de sua classe de tempo de execução.
A menos que você queira passar toda a sua vida em purismo e sofisma ... sim.
Toda vez que você mantém algo que é identificado com exclusividade, é usado para forjar outras coisas identificáveis com exclusividade.
Algumas dessas instanciações podem ter nomes mais precisos, mas em geral isso funciona.
Muitas pessoas reservam "instância" para instâncias de classes. Se você fizer isso em C ++, uma variável pode ser uma instância de uma classe, uma referência a uma instância, um ponteiro para uma instância ou um tipo primitivo (você provavelmente contaria estruturas como classes nesse contexto, elas são quase completamente o mesmo). Em Java ou Objective-C, as variáveis nunca seriam instâncias, mas possivelmente referências a instâncias.
Esqueceu: Por um curto período, um ponteiro C ++ pode ser um ponteiro para a memória bruta, por exemplo "this" antes que o construtor comece a executar. Você provavelmente não chamaria * isso de instância ainda neste momento.