Registro de Aprendizagem 20201101

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)

Acho que você gosta

Origin blog.csdn.net/weixin_45137562/article/details/109490907
Recomendado
Clasificación