Registro de aprendizaje 20201101

Registro de aprendizaje 20201101
referencia no válida:

Type & Top()
	{
    
    
		return data[top];
	}
int &a = ist.Top();//若此时top = 2时
ist.Pop();//出栈操作
cout << a << endl;//此时最开始的top为2的栈顶元素丢失了(不当的引用操作)

La diferencia entre new y malloc (en la clase C ++):
malloc solo es responsable de abrir espacio, mientras que new (palabra clave) abre espacio y crea objetos al mismo tiempo

La forma de llamada de nuevo:
llamada de palabra clave: dos acciones, solicitar espacio y crear objeto

Object * op = new Object(10);//初始化

delete op;//调用析构函数

Llamada a función: solo solicita espacio

Object * os = (Object*)::operator new(Object);//初始化
::operator delete(os);//函数调用的方式析构

Posicionamiento nuevo: no solicite espacio

(new(os) Object(100);
os->~Object();//对象调用析构函数

Poco conocimiento:
size_t es un tipo entero sin signo.
Si el método de la clase no necesita cambiar el objeto, intente diseñarlo como un método regular (gran versatilidad y alta seguridad)

Supongo que te gusta

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