类创建对象和类指针创建对象的内存表现以及区别
来源:互联网 发布:钱宇平 知乎 编辑:程序博客网 时间:2024/05/16 19:38
大家好,我是一个C++的初学者,所以不免要学习一下C++的面向对象和内存机制,我自己也一直没有弄清楚一个问题:
注:Student 是一个学生类;
Student stu; (1)
Student *p_stu; (2)
Student *p_stu = 0(Student *p_stu = NULL); (3)
Student *p_stu = new Student(); (4)
这三者的区别,我一直不太清楚,下面我是我收集资料然后整理的内容:
(1) Student stu;
这就是在内存中出现的情况,系统会自动给stu对象分配一个内存,而且是在栈区,有系统自行管理;而且stu对象是一个局部对象,他的生命周期是在创建初期到函数结束,所以才使用这种情况的时候,注意生命周期问题,一般你在别的函数中需要使用到这个对象的时候,尽量不要使用这种方法创建一个对象;
(2) Student *p_stu;
如下图:
这种方式是用来定义一个指向Student类的指针,且没有初始化,系统会自动分配一个内存用来存储类指针p_stu,而且里面的值此时是一个随机值。
(3)Student *p_stu = 0(Student *p_stu = NULL);
有些人就会问了,这不就是第二条么,对,却是第二条,我在这里独立开的原因是想说明一个情况:就是要初始化;
主要是我看到了一些代码,让我自己有点迷惑,所以我就加上了这一条,下面请看代码:
(4)Student *p_stu = new Student();
如下图:
这种方式就弥补了第一种方式的缺点,所以在C++中新建对象的时候一般使用这种情况(不绝对,因为我是新手),
但是一定要注意:new 出来的对象空间,一定要在析构函数中回收空间,或者在别的地方回收,就是使用delete关键字来回收,否则会出现内存泄露,这是一个极其需要关注的地方。
这就是我今天的收获,虽然是自己东拼西凑出来的,但是,聊胜有无吧,而且自己也多多学习,如果有错误,请多多指教,我还会继续更正里面的错误!
保持一颗上进的心,做一个真正的软件开发工程师,不做一个程序员!
- 类创建对象和类指针创建对象的内存表现以及区别
- 类创建对象和类指针创建对象的内存表现以及区别
- C++ 对象和实例的区别,以及用new和不用new创建类对象区别
- C++ 对象和实例的区别,以及用new和不用new创建类对象区别
- C++ 对象和实例的区别,以及用new和不用new创建类对象区别
- 声明对象和创建对象的区别
- 类的说明和对象的创建-内存分析
- Java类和对象,对象的创建
- 面向对象-类和对象的创建
- jvm对象创建以及类的加载
- 创建类和对象
- 创建类和对象
- 创建类和对象
- 创建类和对象
- 用基类指针创建的派生类对象,从而无法访问派生类对象的数据和成员
- 用基类指针创建的派生类对象,无法访问派生类对象的数据和成员
- 创建类的对象
- C++用new和不用new创建类对象区别 内存
- Android版本史
- JavaScript的应用在什么地方?
- JS判断输入日期的正确性
- 解决svn报错:svn: Working copy 'D:\02_workplace\udp\WebRoot\Backstage\Sysi' locked; try performing 'clean
- android使用Notification进行通知时有时候通知栏中的项背景是灰白的的,而不是根据手机系统的颜色而定
- 类创建对象和类指针创建对象的内存表现以及区别
- loadrunner场景之java环境的设置
- JAVA简易文件扫描器
- adapter.notifyDataSetChanged()不起作用的解决
- oProfile的安装与使用
- java iterator与iterable的区别
- xib 学习
- 视频会议 即时通讯 开发流程指南
- java web项目检出到本地后把jdbc 的ip改成本机就有错误