【转】new对象时,类名后加括号和不加括号的区别
请看测试代码:
#include <iostream>
using namespace std; // 空类
class empty
{
}; // 一个默认构造函数,一个自定义构造函数
class Base
{
public:
Base()
{
cout << " default Base construct " << endl;
m_nValue = ;
};
Base(int nValue)
{
cout << " custom Base construct " << endl;
m_nValue = nValue;
}; private:
int m_nValue;
}; // 一个复合默认构造函数
class custom
{
public:
custom(int value = )
{
cout << " default && custom construct " << endl;
m_nValue = value;
} private:
int m_nValue;
}; void main()
{
empty* pEmpty1 = new empty;
empty* pEmpty2 = new empty(); Base* pBase1 = new Base;
Base* pBase2 = new Base();
Base* pBase3 = new Base(); custom* pCustom1 = new custom;
custom* pCustom2 = new custom(); delete pEmpty1;
delete pEmpty2; delete pBase1;
delete pBase2;
delete pBase3; delete pCustom1;
delete pCustom2;
}
// Result:
/*
default Base construct
default Base construct
custom Base construct
default && custom construct
default && custom construct
*/
1、加括号和不加括号的区别
(1)加括号
a、若括号为空,即无实参项,那么理解为调用默认构造函数;
b、若括号非空,即有实参项,可以理解为调用重载构造函数,或复合默认构造函数(形式参数均为默认值)
(2)不加括号
调用默认构造函数,或复合默认构造函数
2、默认构造函数与复合默认构造函数的区别
(1)默认构造函数
编译器会为每一个类默认提供一个构造函数,称之为默认构造函数。默认构造函数一般参数为空。
(2)复合默认构造函数
一个由用户自定义的所有形式参数都赋有默认值得构造函数,称之为复合默认构造函数。
两者联系:
一个类中,若一旦有一个用户自定义构造函数,那么由编译器提供的默认构造函数就不再存在。用户自定义的构造函数为默认构造函数的重载版。
默认构造函数不复存在时,用户必须为这个类再定义一个复合默认构造函数(选所有自定义构造函数其中之一,把形式参数均赋默认值即可)。
不论自定义构造函数(即构造函数的重载版)有多少个,只允许有一个复合默认构造函数。
转自:http://www.cnblogs.com/Braveliu/p/4263145.html
【转】new对象时,类名后加括号和不加括号的区别的更多相关文章
- JS声明对象时属性名加引号与不加引号的问题
般情况下属性名加引号和不加引号是都可以的,效果是一样的. var obj = { name : '你好', 'age' : 1, }; document.write( obj['name'] + '& ...
- 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 ...
- new对象时,类名后加括号与不加括号的区别
[1]默认构造函数 关于默认构造函数,请参见随笔<类中函数> 请看测试代码: 1 #include <iostream> 2 using namespace std; 3 4 ...
随机推荐
- 初探ant-design(web版本)
第一步安装ant-design插件 第二步查看项目目录 第三步运行项目 我们查看index.js文件 这个其实是Datepicker组件的展示效果 第四步我们按照下面的代码代替Index.js中的内容 ...
- MFC中运行出现问题“不支持尝试执行的操作”
http://blog.csdn.net/maturn/article/details/8051987 问题描述: 基于CDialogEx的对话框工程.VS2010开发环境. 调试运行到OnInitD ...
- (next_permutation)Ignatius and the Princess II hdu102
Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ( ...
- scrapy 动态IP、随机UA、验证码
随机UA https://github.com/hellysmile/fake-useragent DOWNLOADER_MIDDLEWARES增加自定义 from fake_useragent im ...
- Bandicam录制视频
我已经录制了一个视频,关于怎么录制视频的,原画画质的嘻嘻.视频地址 http://www.tudou.com/programs/view/T7xzG1CgsD4 ------------------ ...
- 小心错误使用EasyUI 让网站性能减半
先不谈需求,和系统架构,直接上来就被抛来了一个问题----基础性能太差了,一个网页打开要好几秒.我了个天,我听了也简直不敢相信,难道是数据量特别大?还是其中业务逻辑特别复杂? 简单的介绍下,基础系统是 ...
- weblogic11g 修改密码和重置密码【原】
修改密码 知道密码的情况下,可参考该链接 http://www.cnblogs.com/may12138/p/6022946.html 或 http://www.cnblogs.com/lsdb/p/ ...
- OpenCV在字符提取中进行的预处理(转)
OCR简介熟悉OCR的人都了解,OCR大致分为两个部分: -文字提取text extractor -文字识别text recognition 其中,第一部分是属于图像处理部分,涉及到图像分割的知识,而 ...
- asp.net mvc Htmlhelper简单扩展
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- Hadop 基础
HDFS 体系结构 mapreduce 体系结构和算法 haddop 集群 zookeeper 操作:HBase 体系结构Hive /Sqoop 体系结构和基本操作: mapreduce 逻辑处理数据 ...