new创建类对象与直接定义的区别
<div class="markdown_views"><h1 id="new创建类对象与直接定义的区别">new创建类对象与直接定义的区别<button class="cnblogs-toc-button" title="显示导航" aria-expanded="false"></button></h1>
new创建对象的特点
- new创建类对象需要指针接收,一处初始化,多处使用
- new创建类对象使用完需delete销毁
- new创建对象直接使用堆空间,而局部不用new定义类对象则使用栈空间
- new对象指针用途广泛,比如作为函数返回值、函数参数等
- 频繁调用场合并不适合new,就像new申请和释放内存一样
new创建类对象实例
1、new创建类对象例子:
CTest* pTest = new CTest();delete pTest;
pTest用来接收类对象指针。
不用new,直接使用类定义申明:
CTest mTest;
此种创建方式,使用完后不需要手动释放,该类析构函数会自动执行。而new申请的对象,则只有调用到delete时再会执行析构函数,如果程序退出而没有执行delete则会造成内存泄漏。
2、只定义类指针
这跟不用new申明对象有很大区别,类指针可以先行定义,但类指针只是个通用指针,在new之前并为该类对象分配任何内存空间。比如:
CTest* pTest = NULL;
但使用普通方式创建的类对象,在创建之初就已经分配了内存空间。而类指针,如果未经过对象初始化,则不需要delete释放。
3、new对象指针作为函数参数和返回值
下面要示意一下类指针对象作为返回值和参数使用。
class CTest
{
public: int a;
}; class CBest
{
public: int b;
}; CTest* fun(CBest* pBest)
{ CTest* pTest = new CTest(); pTest->a = pBest->b;return pTest;
} int main()
{ CBest* pBest = new CBest(); CTest* pRes= fun(pBest); if(pBest!=NULL) delete pBest; if(pRes!=NULL) delete pRes ; return -1;
}
new创建类对象与直接定义的区别相关推荐
- JavaScript 创建类/对象的几种方式
在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的. JS对象是一种复合类型,它允许你通过变量 ...
- C++ 对象和实例的区别,以及用new和不用new创建类对象区别
起初刚学C++时,很不习惯用new,后来看老外的程序,发现几乎都是使用new,想一想区别也不是太大,但是在大一点的项目设计中,有时候不使用new的确会带来很多问题.当然这都是跟new的用法有关的.ne ...
- python 元类 type_Python 使用元类type创建类对象常见应用详解
本文实例讲述了Python 使用元类type创建类对象.分享给大家供大家参考,具体如下: type("123") 可以查看变量的类型;同时 type("类名", ...
- C++用new和不用new创建类对象区别
来自博文: 1. https://www.cnblogs.com/kissfu/p/3301436.html 2. https://blog.csdn.net/chen_jint/article/de ...
- C++创建类对象时(无参)后不加括号与加括号的区别
在不考虑用new动态创建对象的情况下,用最普通的 类名 对象名(参数); 的方法创建对象 先贴上最正常最普通的代码 #include<iostream> using namespace s ...
- python3 动态创建类对象并调用函数
1. 首先import相关模块`import importlib` 2. 加载你想要加载的模块`model = importlib.import_module(模块名称)` 3. 获取类对象`api_ ...
- 看完这篇你还敢说分不清 Java 类 对象 实例 变量间的区别?
看完这篇你还敢说分不清 Java 类 对象 实例 变量间的区别? 什么是类? 什么是对象? 什么是变量? 对象和类的关系: Java中的类: Java中的对象 Java中的变量 Java 中调用 对象 ...
- 【C++学习】对私有构造析构函数的思考:new一个类对象vs直接创建类对象
前置知识: new的类对象需要手动delete.且使用堆空间.且只能用指针接收. 直接创建的类对象创建在栈中(或说堆栈).不需要手动delete,随着生存周期的结束(如所在的函数return了)而释放 ...
- python 类构造函数_Python构造函数创建类对象
python 类构造函数 In the last tutorial, we learned how to create a class, its instance and how to access ...
最新文章
- tf.keras.layers.LSTM 示例
- 问题记录之用poi生成图片并插入到word时,图片中的中文显示不出来
- LeetCode:Minimum Depth of Binary Tree,Maximum Depth of Binary Tree
- 成功解决object at 0x000002463192BAC8
- L2-1 包装机 (25 分)
- c读取txt文件内容并建立一个链表_面试官给我挖坑:rm删除文件之后,空间就被释放了吗?...
- eclipse环境变量的配置
- C++ RGB转灰度图像
- STM32H7的终极调试组件Event Recorder
- 大风起兮云飞扬 —记2011年的中国云计算
- 2021年电工(初级)报名考试及电工(初级)考试资料
- Map接口以及那些实现类
- MinGW与Clion下载安装及使用详解
- NLP中的attention机制总结
- vim 重新编译,支持lua (compile vim with lua)
- ubuntu 笔记本亮度调节
- phalapi可以依赖注入么_[7.8]-phalapi-进阶篇2(DI依赖注入和单例模式) | PhalApi(π框架) - PHP轻量级开源接口框架...
- c语言求某年某月1日是星期几,蔡勒(Zeller)公式:根据日期推算是星期几
- 斯坦福SCI论文写作课笔记(十三)
- Unity 触摸事件的运用