new对象时,类名后加括号与不加括号的区别
【1】默认构造函数
关于默认构造函数,请参见随笔《类中函数》
请看测试代码:

1 #include <iostream>
2 using namespace std;
3
4 // 空类
5 class empty
6 {
7 };
8
9 // 一个默认构造函数,一个自定义构造函数
10 class Base
11 {
12 public:
13 Base()
14 {
15 cout << " default Base construct " << endl;
16 m_nValue = 100;
17 };
18 Base(int nValue)
19 {
20 cout << " custom Base construct " << endl;
21 m_nValue = nValue;
22 };
23
24 private:
25 int m_nValue;
26 };
27
28 // 一个默认复合构造函数
29 class custom
30 {
31 public:
32 custom(int value = 100)
33 {
34 cout << " default && custom construct " << endl;
35 m_nValue = value;
36 }
37
38 private:
39 int m_nValue;
40 };
41
42 void main()
43 {
44 empty* pEmpty1 = new empty;
45 empty* pEmpty2 = new empty();
46
47 Base* pBase1 = new Base;
48 Base* pBase2 = new Base();
49 Base* pBase3 = new Base(200);
50
51 custom* pCustom1 = new custom;
52 custom* pCustom2 = new custom();
53
54 delete pEmpty1;
55 delete pEmpty2;
56
57 delete pBase1;
58 delete pBase2;
59 delete pBase3;
60
61 delete pCustom1;
62 delete pCustom2;
63 }
64 // Result:
65 /*
66 default Base construct
67 default Base construct
68 custom Base construct
69 default && custom construct
70 default && custom construct
71 */

至此足以。
【2】加括号与不加的区别
(1)加括号
1. 若括号为空,即无实参项,那么理解为调用默认构造函数;
2. 若括号非空,即有实参项,可以理解为调用重载构造函数,或默认复合构造函数。
(2)不加括号
调用默认构造函数,或默认复合构造函数。
new对象时,类名后加括号与不加括号的区别的更多相关文章
- JS声明对象时属性名加引号与不加引号的问题
般情况下属性名加引号和不加引号是都可以的,效果是一样的. var obj = { name : '你好', 'age' : 1, }; document.write( obj['name'] + '& ...
- 【转】new对象时,类名后加括号和不加括号的区别
请看测试代码: #include <iostream> using namespace std; // 空类 class empty { }; // 一个默认构造函数,一个自定义构造函数 ...
- Python调用函数加括号和不加括号的区别
Python调用函数加括号和不加括号的区别 # -*- coding: utf-8 -*- #!/usr/bin/env python # @Time : 2018/7/3 10:03 # @Desc ...
- C++中创建对象的时候加括号和不加括号的区别
c++创建对象的语法有----- 1 在栈上创建 MyClass a; 2 在堆上创建加括号 MyClass *a= new MyClass(); 3 不加括号 MyClass *a = new My ...
- 函数基础重点掌握内容:创建函数、return返回单个值、return返回多个值、函数名加括号与不加括号的区别
##比较两个数大小 #有参函数!!! def compare(s,t): if s > t: print(s) else: print(t) f=compare compare(1000,30) ...
- C++中创建对象的时候加括号和不加括号的区别(转)
c++创建对象的语法有----- 1 在栈上创建 MyClass a; 2 在堆上创建加括号 MyClass *a= new MyClass(); 3 不加括号 MyClass *a = new My ...
- Java中主类中定义方法加static和不加static的区别
Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用(类名.方法),后者必须先实例化后用实例调用) 知识点:1.Getter and Setter 的应用 ...
- onclick时间加return和不加return的区别
JAVASCRIPT在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置. 而该值决定了当前操作是否继续.当返回的是true时,将继续操作.当返回是 ...
- js中加“var”和不加“var”的区别
JavaScript 拥有动态类型.这意味着相同的变量可用作不同的类型: var x // x 为 undefined var x = 6; // x 为数字 var x = "Bill&q ...
随机推荐
- bug检测报告---礼物挑选小工具--飞天小女警
飞天小女警----礼物挑选小工具 测试产品链接:http://123.207.159.79:8088/giving_gifts/ 发布在作者的博客里面:http://www.cnblogs.com/s ...
- word转html方法
在网上看了一篇关于word转html的文章,感觉不错,和大家分享一下. /// <summary> /// word转成html /// </summary> /// < ...
- PHP获取毫秒时间戳,利用microtime()函数
PHP获取毫秒时间戳,利用microtime()函数 php本身没有提供返回毫秒数的函数,但提供了一个microtime()函数,借助此函数,可以很容易定义一个返回毫秒数的函数.php的毫秒是没有默认 ...
- Create and Use Custom Attributes
http://www.codeproject.com/Articles/1811/Creating-and-Using-Attributes-in-your-NET-applicat Create a ...
- QTP
QTP支持功能测试和回归测试的自动化. 支持录制功能,可以对脚本设置检查点,也可以进行参数化.可以在一个ACTION中调用另外一个ACTION action可以调用外部脚本.可以复制已有的ACTION ...
- urllib编码
python: 1.unquote 2.decode 3.encode
- [课程设计]Scrum 1.3 多鱼点餐系统开发进度(系统主界面框架&美化)
Scrum 1.3 多鱼点餐系统开发进度(系统主界面框架&美化) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅 ...
- 再次熟悉jdbc连接mysql
闲来无事想探究一下jdbc 1.首先准备工作.我们要下载jdbc驱动包mysql-connector-java-5.1.7-bin.jar.其他的暂时先不用,这个包的下载地址:http://pan.b ...
- android setting 设置永不休眠
默认情况下,Android系统在超过N分钟没操作,会自动关屏并进入休眠状态. 实际上,有些项目要求超时不休眠,如果只是针对单个应用程序,我们可以通过电源管理设置状态来实现, 而如果要设置所有应用的超 ...
- 【20160924】GOCVHelper 图像处理部分(1)
增强后的图像需要通过图像处理获得定量的值.在实际程序设计过程中,轮廓很多时候都是重要的分析变量.参考Halcon的相关函数,我增强了Opencv在这块的相关功能. //寻找最大的轮廓 ...