Perguntas com a marcação «delete-operator»






16
Como delete [] sabe que é uma matriz?
Tudo bem, acho que todos concordamos que o que acontece com o código a seguir é indefinido, dependendo do que foi passado, void deleteForMe(int* pointer) { delete[] pointer; } O ponteiro pode ter todos os tipos de coisas diferentes e, portanto, executar um incondicional delete[]nele é indefinido. No entanto, vamos …



12
Por que não excluir define o ponteiro para NULL?
Eu sempre me perguntei por que a configuração automática do ponteiro para NULL após excluir não faz parte do padrão. Se isso for resolvido, muitas das falhas devido a um ponteiro inválido não ocorrerão. Mas, tendo dito isso, posso pensar em duas razões pelas quais o padrão restringiria isso: Atuação: …

6
Excluindo um ponteiro em C ++
Contexto: Estou tentando entender os ponteiros, acabamos de vê-los há algumas semanas na escola e enquanto praticava hoje encontrei um idiota? problema, pode ser super simples para você, mas tenho pouca ou nenhuma experiência em programação. Já vi algumas perguntas no SO sobre a exclusão de ponteiros, mas todas parecem …

5
Excluindo um ponteiro para const (T const *)
Eu tenho uma pergunta básica sobre os ponteiros const. Não tenho permissão para chamar funções de membro não const usando um ponteiro const. No entanto, tenho permissão para fazer isso em um ponteiro const: delete p; Isso chamará o destruidor da classe que, em essência, é um 'método' não const. …

5
Como você 'realoca' em C ++?
Como posso reallocem C ++? Parece faltar na linguagem - existe newe deletenão existe resize! Eu preciso disso porque, à medida que meu programa lê mais dados, preciso realocar o buffer para mantê-los. Não acho que deleteo ponteiro antigo e o newnovo, maior, sejam a opção certa.


3
Por que o destruidor não é chamado na exclusão do operador?
Eu tentei chamar ::deleteuma aula operator deletesobre isso. Mas o destruidor não é chamado. Eu defini uma classe MyClassque operator deletefoi sobrecarregada. O global operator deletetambém está sobrecarregado. O sobrecarregado operator deletede MyClasschamará o global sobrecarregado operator delete. class MyClass { public: MyClass() { printf("Constructing MyClass...\n"); } virtual ~MyClass() { …

1
Um compilador pode colocar a implementação de um destruidor virtual declarado implicitamente em uma única unidade de tradução separada?
O código a seguir compila e vincula com Visual Studio(2017 e 2019 com /permissive-), mas não compila com gccou clang. foo.h #include <memory> struct Base { virtual ~Base() = default; // (1) }; struct Foo : public Base { Foo(); // (2) struct Bar; std::unique_ptr<Bar> bar_; }; foo.cpp #include "foo.h" …
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.