[转]c++ new带括号和不带括号
ref:http://m.blog.csdn.net/blog/u012745772/42420443
在new对象的时候有加上(),有不加(),不知道这个到底是什么区别?
比如:
CBase *base = new CDerived();
CBase *base = new CDeviced;
很多人都说,加括号调用没有参数的构造函数,不加括号调用默认构造函数或唯一的构造函数。这是有问题的。
对于自定义类类型:
如果该类没有定义构造函数(由编译器合成默认构造函数)也没有虚函数,那么class c = new class;将不调用合成的默认构造函数,而class c = new class();则会调用默认构造函数。申请的空间会初始化为0
如果该类没有定义构造函数(由编译器合成默认构造函数)但有虚函数,那么class c = new class;和class c = new class();一样,都会调用默认构造函数。申请的空间不会初始化为0
如果该类定义了默认构造函数,那么class c = new class;和class c = new class();一样,都会调用默认构造函数。
对于内置类型:
int *a = new int;不会将申请到的int空间初始化,而int *a = new int();则会将申请到的int空间初始化为0。
以下两个语句的区别是:第一个动态申请的空间里面的值是随机值,第二个进行了初始化,里面的值为0:
int *p1 = new int[10];
int *p2 = new int[10]();
结论:别使用不带括号的new。
class A{
public:
//A(){a=1;}
public:
int a;
};
A *a1=new A;
A *a2=new A();
cout<<a1->a<<endl; //输出:-842150451
cout<<a2->a<<endl; //输出0
A a3;
cout<<a3.a<<endl; //运行异常,a没有初始化。
如果加上一个virtual,如virtual ~A(){},
则
cout<<a1->a<<endl; //输出:-842150451
cout<<a2->a<<endl; //输出 -842150451
转载于:https://www.cnblogs.com/kaishan1990/p/4530162.html
[转]c++ new带括号和不带括号相关推荐
- python装饰器带参数函数_python带参数装饰器的两种写法
python带参数装饰器的两种写法 前言 最近在实现一个装饰器的过程中发现了一个很有意思的地方,在博客里面分享出来 不同的写法 三层函数嵌套,实现了可传参数的一个装饰器. import logging ...
- C语言中的带参宏和带参函数的区别
C语言中的带参宏和带参函数的区别 (1) 带参函数中的形参是变量,因此有类型检查.而带参宏只是简单的字符串替换. (2) 从程序执行的过程来看,带参宏是在预处理阶段被预处理器处理的.而带参函数是在程序 ...
- 【零基础】带你学C带你飞
基本特性 1. 高级语言:它是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元. 2. 结构式语言:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立 ...
- C语言学习笔记《带你学C带你飞》P21-P40
文章目录 21.指针 22.指针和数组 23.指针数组和数组指针 24.指针和二维数组 25.void指针和NULL指针 26.指向指针的指针 27.常量和指针 28.函数 29.参数和指针 30.指 ...
- Android UI(五)云通讯录项目之联系人列表,带侧滑选择,带搜索框
作者:泥沙砖瓦浆木匠 网站:http://blog.csdn.net/jeffli1993 个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 36523458 ...
- 在origin 2018中同时画两个图,带errorbar和不带errorbar两种情况
在origin 2018中同时画两个图,带errorbar和不带errorbar两种情况 在一个图层里同时画两幅图 两幅图坐标可不一致 ①在当前图层中,选中图层左上角的 1 标志 ②右键 1 →图层内 ...
- HttpHelps类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式,可以设置代理...
原文地址:http://blog.csdn.net/cdefg198/article/details/8315438 万能框架:http://www.sufeinet.com/forum.php?mo ...
- UTF-8带BOM和不带BOM的转换
UTF-8带BOM和不带BOM的转换 标签:Linux UTF-8 BOM [问题] 在linux下如果你使用过的编码不是utf-8你可以使用enca进行转换,然而转换过后的情况是不带bom的uft- ...
- androidstudio带pom的上传到jcenter_输送机@网带输送机@304网带输送机@304不锈钢网带输送机@输送机网带厂家定制...
输送机@网带输送机@食品网带输送机@304网带输送机@304不锈钢网带输送机@输送机网带厂家定制 输送机主要用于运输食品原料或成品.食品输送机根据输送带不同可分为皮带的,链板的,网带的.输送形式有:直 ...
- 【转】C++中#include包含头文件带 .h 和不带 .h 的区别
C++中#include包含头文件带 .h 和不带 .h 的区别? 如 #include <iostream> 和 #include <iostream.h> 包含的东西有哪些 ...
最新文章
- Android开发环境的搭建
- 模板元编程实现素数判定
- 自定义ant中table表格的展开图标 修改ant-vue-design中嵌套表格table的expandIcon自定义图标
- RK3288/RK3399 CPU定频方法
- java增删改查代码_低代码开发平台
- 11.Axis客户端接收不同参数类型
- centreon与nagios整合
- PHP 简体中文繁体互转
- 零基础如何入门数据分析师?
- .styl格式的CSS样式文件是什么文件
- java三角形边长_java三角形怎么求边?
- Swing错鸡包 特殊历史脚本
- 外链代发切勿用群发器
- 你的气象图何必如此枯燥
- 程序员从互联网转行公务员:工资一万多变四千,但过得美滋滋
- 只待狂欢!青岛凤凰音乐节三大主题舞台搭建完毕
- 【转载】windows和wls文件互通
- SSM添加p6spy
- 东风本田crv2020新款混动说明书_谈谈近30万的2019款本田CRV油电混动版,用车感想在这里...
- Conjugate heat transfer in the hypersonic flows 翻译及笔记
热门文章
- 第八届蓝桥杯决赛 平方十位数(枚举)
- 四位共阳极数码管显示函数_Verilog笔记
- 网工协议基础(1) OSI七层模型
- 轻松搭建基于 SpringBoot Vue 的 Web 商城应用
- 云原生生态周报 Vol. 15 | K8s 安全审计报告发布
- 新浪微博杨卫华 PHP,构建高性能的微博系统——再谈新浪微博架构_杨卫华.pdf
- java word 在线编辑图片_java开发实现word在线编辑及流转
- Delphi XE 10.4 FMX ListView 一个不易察觉的 BUG
- soap协议_Go和SOAP
- php数组排序面试题,PHP按子数组值对数组排序