方法一:
ClassName object(param);
这样就声明了一个ClassName类型的object对象,C++会为它分配足够的存放对象所有成员的存储空间。
注意:为节省存储空间,C++创建对象时仅分配用于保存数据成员的空间,而类中定义的成员函数则被分配到存储空间中的一个公用区域,由该类的所有对象共享。
例如,我定义了一个这样的类:
class Rec
{
   public:
   Rec(int width,int height);
   ~Rec();
   int getArea();
   private:
   int Rwidth;
   int Rheight;
};
当你Rec myRec(5,5);这样创建一个myRec对象, 然后打印出sizeof(myRec);的时候,会得到 8 这个结果。
因为myRec中有2个int类型的数据成员,一个int成员占4个字节,所以myRec对象占8个字节。
这种方法创建的对象,内存分配是分配到栈中的,由C++缺省创建和撤销,自动调用构造函数和析构函数
注意:该方法创建的对象调用类方法时,必须用“.”,而不能用“->”.如myRec.getArea();
=============================================================================================
方法二:
ClassName *object=new ClassName(param);
delete object;
这种方法跟java有点类似,相同的是,它们都是在堆上分配内存来创建对象的(与上不同);不同的是,C++用new创建对象时返回的是一个对象指针,object指向一个ClassName的对象,C++分配给object的仅仅是存放指针值的空间。而且,用new 动态创建的对象必须用delete来撤销该对象。只有delete对象才会调用其析构函数。
注意:new创建的对象不是用“*”或“.”来访问该对象的成员函数的,而是用运算符“->”;
例如:Rec *rec=new Rec(3,4);
      rec->getArea();
      delete rec;
顺便提一下:
一般来说,编译器将内存分为三部分:静态存储区域、栈、堆。静态存储区主要保存全局变量和静态变量,栈存储调用函数相关的变量、地址等,堆存储动态生成的变量。 在c中是指由malloc,free运算产生释放的存储空间,在c++中就是指new和delete运算符作用的存储区域。
另外收集了两种方法的优点:
new出来的在堆上,直接定义的在栈上,栈的大小有限制
new的好处:
1、需要的时候才new(在复杂权限和业务逻辑系统中很重要)
2、对象可靠性检查(没有栈空间的限制问题)
3、对象的适度留用控制

在C++里,有两种方法创建对象:相关推荐

  1. 【转载】C++创建对象的两种方法

    原文:http://blog.sina.com.cn/s/blog_586b6c050100dhjg.html 在C++里,有两种方法创建对象: 方法一: ClassName object(param ...

  2. python两种方法读取、修改文件的创建时间、修改时间、访问时间

    看到网上有人出于特种目前,需要修改文件的创建时间和修改时间(访问时间是只要在操作系统里打开文件,系统就会自动更改最后的访问时间,因此此时间无意义,于是在网上查阅结合自己的经验,归纳 一下可行方案,在  ...

  3. vue 获取请求url_vue 获取url里参数的两种方法小结

    我就废话不多说了,大家还是直接看代码吧~ 第一种: const query = Qs.parse(location.search.substring(1)) let passport = query. ...

  4. html+input改变图标,JS Input里添加小图标的两种方法

    我们在做网页的时候,经常需要在input里面添加小图标,那么这里就介绍比较常见的两种方法. 将小图标当做input的背景来插入,直接上代码吧: Box{ height: 50px; backgroun ...

  5. 在word里,毕业论文和开题报告的参考文献目录如何设置成第二行空两格的格式?(介绍两种方法)

    下面介绍两种方法 (1)全选中参考文献→开始→编号(如图1)→点最下面的"自定义编号"→选一个编号完之后两行头头都是平行的数字编号(如图2)→然后点右下方的"自定义&qu ...

  6. html密码框怎么添加小图标,JS Input里添加小图标的两种方法

    我们在做网页的时候,经常需要在input里面添加小图标,那么这里就介绍比较常见的两种方法. 方法一 将小图标当做input的背景来插入,直接上代码吧: *{ margin: 0; padding: 0 ...

  7. input 单击 图标_JS Input里添加小图标的两种方法

    我们在做网页的时候,经常需要在input里面添加小图标,那么这里就介绍比较常见的两种方法. 方法一 将小图标当做input的背景来插入,直接上代码吧: *{ margin: 0; padding: 0 ...

  8. 不需要下载电脑软件,就能解决U盘里不显示文件的两种方法

    方法一: 把U盘插到电脑上,摁快捷键win+r打开运行窗口,输入cmd回车,打开dos命令窗口,如图 先确定刚刚插入u盘的盘符,这边显示的是G盘,如图: 然后在刚刚打开的dos命令中输入"G ...

  9. coreldraw x8里线段显示尺寸_CorelDRAW X8轮廓线的粗细变化两种方法介绍-轮廓线的粗细变化教程_好特教程...

    如果您需要一条粗细不等的曲线路径,您会选择用贝塞尔工具绘制出来,还是使用CorelDRAW中的技巧来实现.当然,CDR中为我们提供多种解决问题的途径,使用贝塞尔或钢笔不是不可以,但可能也是最笨的方法了 ...

最新文章

  1. windbg 调试技巧
  2. spark Bisecting k-means(二分K均值算法)
  3. 基于MATLAB的Okumura-Hata模型的仿真
  4. 《算法竞赛入门经典》第一章1.5
  5. 为什么 学汽修 java_这七个优势 告诉你为什么要学汽修
  6. 推荐一个好用而且免费的XML文件查看工具,高效,易用而且可定制
  7. 利用python 对比相似度_头条、油条商标有多像?Python检测发现相似度高达98.4%
  8. productFlavors设置signingConfig不管用的问题
  9. json 语法_JSON的基本语法
  10. 注解-@Conditional的使用
  11. 太傻了!下次二面再回答不好“秒杀系统“设计原理,我就捶死自己...
  12. index.jsp中文乱码问题
  13. Redis集群:./redis-trib.rb:24:in `require': no such file to load -- rubygems
  14. Python函数的返回值
  15. Maximum Clique最大团问题
  16. c语言如何关闭窗口,如何用C脚本关闭当前窗口?
  17. 在Windows系统中使用DIY Dodecad 2.1 分析祖源的方法
  18. android 最火框架,一个牛逼哄哄的Android框架One,秒杀最火的Xutils
  19. 计算机在表格顶端添加标题,Excel表格图标上方显示数据-怎样在excel图标里添加图表元素?...
  20. 弹跳机器人 桌游_「桌游推荐」我的机器人哪有这么厉害

热门文章

  1. 白盒测试和黑盒测试_黑盒测试与白盒测试的比较
  2. 用html5播放两个视频,HTML5视频 - 如何进行无缝播放和/或几个视频循环?
  3. java 字符串模糊匹配_Java实现伪查询(全匹配+模糊匹配)
  4. 鸿蒙处理器的手机有什么,华为重拳出击!首款鸿蒙手机已确认,网友:还买什么iPhone11?...
  5. html 一个圆圈一个c,如何用c语言程序画一个圆?
  6. python内建函数是什么意思_Python 自省相关的内建函数和属性
  7. 本科不是985\211都会被歧视?
  8. 基于FPGA的FFT设计
  9. 华为鸿蒙os生态,华为鸿蒙系统终于来了! 首款方舟编译器应用正式上架: 鸿蒙OS可用...
  10. 宝塔挂载linux硬盘,宝塔移动硬盘挂载Linux服务器挂载ntfs移动硬盘