千家信息网

C++中new类型的运算符怎么使用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"C++中new类型的运算符怎么使用",在日常操作中,相信很多人在C++中new类型的运算符怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++
千家信息网最后更新 2026年11月03日C++中new类型的运算符怎么使用

这篇文章主要介绍"C++中new类型的运算符怎么使用",在日常操作中,相信很多人在C++中new类型的运算符怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++中new类型的运算符怎么使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    1.new操作符

    new operator,平时用的最多的new操作符,其对应delete operator,不能被重载,其包含两个操作(既申请空间,又调用构造函数)

    • (1)使用::operator new申请内存

    • (2)调用类的构造函数

    class CTestUse{public:    CTestUse() { cout << __FUNCTION__ << endl; }    virtual ~CTestUse() { cout << __FUNCTION__ << endl; } private:}; void test(){    string *pStr = new string("new operator");    cout << *pStr << endl;    delete pStr;     CTestUse *pCase = new CTestUse;    delete pCase;}  int main(int argc, char *argv[]){    test();     return 0;}

    运行结果如下:

    2.::operator new

    ::operator new,只会申请空间,不会调用构造函数,可以被重载,其对应 ::operator delete (只申请空间)

    2.1原始调用

    class CTestUse1{public:    CTestUse1() { cout << __FUNCTION__ << endl; }    virtual ~CTestUse1() { cout << __FUNCTION__ << endl; }    void show() { cout << __FILE__ << " " << __FUNCTION__ << endl; } private:};  void test1(){    CTestUse1 *pCase = (CTestUse1 *)::operator new (sizeof(CTestUse1));    pCase->show();    ::operator delete(pCase); } int main(int argc, char *argv[]){    test1();     return 0;}

    运行结果如下:

    2.2重载1

    class CTestUse2{public:    CTestUse2() { cout << __FUNCTION__ << endl; }    virtual ~CTestUse2() { cout << __FUNCTION__ << endl; }    void show() { cout << __FILE__ << " " << __FUNCTION__ << endl; }     void* operator new(size_t size) {        cout << __FUNCTION__ << endl;        return ::operator new(size);    }     void operator delete(void* ptr) {        cout << __FUNCTION__ << endl;        ::operator delete(ptr);    } private:}; void test2(){    CTestUse2 *pCase = new CTestUse2;    pCase->show();    delete pCase; } int main(int argc, char *argv[]){    test2();     return 0;}

    运行结果如下:

    2.3重载2

    class CTestUse3{public:    CTestUse3() { cout << __FUNCTION__ << endl; }    virtual ~CTestUse3() { cout << __FUNCTION__ << endl; }    void show() { cout << __FILE__ << " " << __FUNCTION__ << endl; }     void* operator new(size_t size, string str) {        cout << __FUNCTION__ << str << endl;        return ::operator new(size);    }     void operator delete(void* ptr) {        cout << __FUNCTION__ << endl;        ::operator delete(ptr);    } private:}; void test3(){    CTestUse3 *pCase = new ("heshiyang") CTestUse3;    pCase->show();    delete pCase; } int main(int argc, char *argv[]){    test3();     return 0;}

    运行结果如下:

    3.place new

    place new在已经构建好的内存中创建对象,其只会返回已经申请好的内存指针,多用在高性能场景下,提前申请好内存,可以节省申请内存开消 (只调用构造函数)

    class CTestUse4{public:    CTestUse4() { cout << __FUNCTION__ << endl; }    virtual ~CTestUse4() { cout << __FUNCTION__ << endl; }    void show() { cout << __FILE__ << " " << __FUNCTION__ << endl; }     void* operator new(size_t size, void* p) {        cout << __FUNCTION__ << endl;        return p;    }     void operator delete(void* ptr) {        cout << __FUNCTION__ << endl;        ::operator delete(ptr);    } private:}; void test4(){    char* pChar = new char[sizeof(CTestUse4)];    CTestUse4* pCase = new (pChar) CTestUse4; //调用全局::new (pChar) CTestUse4,new (pChar) CTestUse4调用重载new    //delete pCase;    pCase->~CTestUse4();} int main(int argc, char *argv[]){    test4();     return 0;}

    运行结果如下:

    到此,关于"C++中new类型的运算符怎么使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

    内存 结果 运行 类型 运算符 C++ 运算 函数 学习 空间 操作符 更多 帮助 原始 实用 接下来 两个 场景 对象 指针 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州为想互联网科技有限公司 上海卓越科技互联网 深圳恒合互联网络科技有限公司 互联网科技垄断 上海互联网科技有限公司 九亚互联网科技 济南和联互联网科技有限公司 互联网实体化科技化 哈尔滨新华互联网科技学院 字节跳动和互联网科技 互联网科技和信息 天津腾达互联网科技有限公司 浙南科技城互联网大厦建设工程 企晟互联网信息科技有限公司 阿里互联网科技企业 南博望互联网科技有限公司 广州千川互联网科技有限公司 广州富喜互联网络科技 互联网科技自媒体灵感 恒生科技互联网指数十大成分股 上海挚品互联网科技有限公司 互联网科技名片 中关村互联网科技集团 南京欣网互联网科技 银川新华互联网科技职业技术培训学校图片 互联网公司科技股 如何创新互联网科技 全球科技与互联网公司市值变化 银川新华互联网科技学校招聘 前海云享互联网科技
    0