Registro de aprendizagem 20201101
referência inválida:
Type & Top()
{
return data[top];
}
int &a = ist.Top();//若此时top = 2时
ist.Pop();//出栈操作
cout << a << endl;//此时最开始的top为2的栈顶元素丢失了(不当的引用操作)
A diferença entre new e malloc (na classe C ++):
malloc é apenas responsável por abrir espaço, enquanto new (palavra-chave) abre espaço e cria objetos ao mesmo tempo
A forma de chamada de novo:
Chamada de palavra - chave: duas ações, solicitar espaço e criar objeto
Object * op = new Object(10);//初始化
delete op;//调用析构函数
Chamada de função: aplicar apenas para espaço
Object * os = (Object*)::operator new(Object);//初始化
::operator delete(os);//函数调用的方式析构
Posicionamento novo: não se aplica para espaço
(new(os) Object(100);
os->~Object();//对象调用析构函数
Pouco conhecimento:
size_t é um tipo inteiro sem sinal.
Se o método na classe não precisar alterar o objeto, tente projetá-lo como um método regular (grande versatilidade e alta segurança)