new delete 基础应用

    xiaoxiao2021-03-26  18

    new delete基础

    基础应用

    #include "iostream" using namespace std; int main() { //1.基础的使用 //new 基本类型 int *p = (int *)malloc(sizeof(int)); free(p); int *p2 = new int; delete p2; //分配数组 int *p3 = new int[4]; p3[0] = 1; p3[1] = 2; p3[2] = 2; p3[3] = 3; cout << p3[0] << endl; delete[] p3; system("pause"); return 0; } 这里面只需要注意一点就是基础类型和数组类型的删除区别就OK。

    深入

    1.区别 #include "iostream" using namespace std; class MyClass { public: MyClass() { cout << "我是构造函数" << endl; } ~MyClass() { cout << "我是析构函数" << endl; } private: }; int main() { //1.基础的使用 //new 基本类型 int *p = (int *)malloc(sizeof(int)); //free(p); delete p; int *p2 = new int; //delete p2; free(p2); //分配数组 int *p3 = new int[4]; p3[0] = 1; p3[1] = 2; p3[2] = 2; p3[3] = 3; cout << p3[0] << endl; //delete[] p3; free(p3); //我们在这里发现如果我用malloc和用new创建的基础对象在使用方面没什么区别 //free和delete也可以相互的删除new和malloc的内存 //区别在对象的时候不一样 MyClass *my = (MyClass *)malloc(sizeof(MyClass)); system("pause"); return 0; }我们发现没有执行构造函数。 #include "iostream" using namespace std; class MyClass { public: MyClass() { cout << "我是构造函数" << endl; } ~MyClass() { cout << "我是析构函数" << endl; } private: }; int main() { //1.基础的使用 //new 基本类型 int *p = (int *)malloc(sizeof(int)); //free(p); delete p; int *p2 = new int; //delete p2; free(p2); //分配数组 int *p3 = new int[4]; p3[0] = 1; p3[1] = 2; p3[2] = 2; p3[3] = 3; cout << p3[0] << endl; //delete[] p3; free(p3); //我们在这里发现如果我用malloc和用new创建的基础对象在使用方面没什么区别 //free和delete也可以相互的删除new和malloc的内存 //区别在对象的时候不一样 MyClass *my = (MyClass *)malloc(sizeof(MyClass)); MyClass *my1 = new MyClass(); system("pause"); return 0; }new的话可以执行构造函数 #include "iostream" using namespace std; class MyClass { public: MyClass() { cout << "我是构造函数" << endl; } ~MyClass() { cout << "我是析构函数" << endl; } private: }; int main() { //1.基础的使用 //new 基本类型 int *p = (int *)malloc(sizeof(int)); //free(p); delete p; int *p2 = new int; //delete p2; free(p2); //分配数组 int *p3 = new int[4]; p3[0] = 1; p3[1] = 2; p3[2] = 2; p3[3] = 3; cout << p3[0] << endl; //delete[] p3; free(p3); //我们在这里发现如果我用malloc和用new创建的基础对象在使用方面没什么区别 //free和delete也可以相互的删除new和malloc的内存 //区别在对象的时候不一样 MyClass *my = (MyClass *)malloc(sizeof(MyClass)); free(my); MyClass *my1 = new MyClass(); delete(my1); system("pause"); return 0; }

    总结

    从以上的代码中我们可以看出,malloc和free是不执行构造函数和析构函数的,但是new和delete他们组成是要自动调用构造函数还有析构函数的。如果是基础的类型的话这两者基本上没有区别。
    转载请注明原文地址: https://ju.6miu.com/read-661167.html

    最新回复(0)