C++中创建对象的时候加括号和不加括号的区别(转)
c++创建对象的语法有-----
1 在栈上创建 MyClass a;
2 在堆上创建加括号 MyClass *a= new MyClass();
3 不加括号 MyClass *a = new MyClass;
4.---------------MyClass a();声明了一个返回值为MyClass类型的无参函数。
#include <iostream>
class MyClass
{
public:
MyClass()
{
std::cout << "Hello MyClass!" << std::endl;
}
MyClass(int i):num(i)
{
std::cout << "Hello MyClass!------int" << std::endl;
} void MyMethod()
{
std::cout << "输出成员num: " <<num << std::endl;
} private:
int num;
};
int main()
{
//---------------对于调用构造函数
MyClass c1;//表示使用不带参数的构造函数,或者有默认参数值的构造函数。
MyClass c2();//不会调用无参构造函数,各种情况下该处是声明一个返回值为MyClass类型的函数而已
MyClass c3();//调用参数为int的构造函数
/*---------------对于new关键字加括号和不加括号的区别---
1.对于自定义类型来说没有区别,都是使用默认构造函数
2.对于内置类型来说加括号会初始化
*/
std::cout<<std::endl;
MyClass *c4 = new MyClass();
c4->MyMethod();
MyClass *c5 = new MyClass();
c5->MyMethod();
MyClass *c6 = new MyClass;
c6->MyMethod(); //内置类型
std::cout<<std::endl;
int *pint1 = new int();
int *pint2 = new int();
int *pint3 = new int; std::cout<<*pint1<<" "<<*pint2<<" "<<*pint3<<std::endl;
return ;
}
输出:
结论:new 关键字创建对象时 对于内置类型:加括号会初始化,不加括号不初始化;对于自定义类型,都会调用默认构造函数,加不加括号没区别。
C++中创建对象的时候加括号和不加括号的区别(转)的更多相关文章
- C++中创建对象的时候加括号和不加括号的区别
c++创建对象的语法有----- 1 在栈上创建 MyClass a; 2 在堆上创建加括号 MyClass *a= new MyClass(); 3 不加括号 MyClass *a = new My ...
- 【转】new对象时,类名后加括号和不加括号的区别
请看测试代码: #include <iostream> using namespace std; // 空类 class empty { }; // 一个默认构造函数,一个自定义构造函数 ...
- 函数基础重点掌握内容:创建函数、return返回单个值、return返回多个值、函数名加括号与不加括号的区别
##比较两个数大小 #有参函数!!! def compare(s,t): if s > t: print(s) else: print(t) f=compare compare(1000,30) ...
- Java中主类中定义方法加static和不加static的区别
Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用(类名.方法),后者必须先实例化后用实例调用) 知识点:1.Getter and Setter 的应用 ...
- js中加“var”和不加“var”的区别
JavaScript 拥有动态类型.这意味着相同的变量可用作不同的类型: var x // x 为 undefined var x = 6; // x 为数字 var x = "Bill&q ...
- Python调用函数加括号和不加括号的区别
Python调用函数加括号和不加括号的区别 # -*- coding: utf-8 -*- #!/usr/bin/env python # @Time : 2018/7/3 10:03 # @Desc ...
- onclick时间加return和不加return的区别
JAVASCRIPT在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置. 而该值决定了当前操作是否继续.当返回的是true时,将继续操作.当返回是 ...
- python中 函数名加括号与不加括号
加括号是返回函数的结果,不加括号相当于函数的调用.
- new对象时,类名后加括号与不加括号的区别
[1]默认构造函数 关于默认构造函数,请参见随笔<类中函数> 请看测试代码: 1 #include <iostream> 2 using namespace std; 3 4 ...
随机推荐
- django中动态生成二级菜单
一.动态显示二级菜单 1.修改权限表结构 (1)分析需求,要求左侧菜单如下显示: 客户管理: 客户列表 账单管理: 账单列表 (2)修改rbac下的models.py,修改后代码如下: from dj ...
- 什么是http协议(二)
一.概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器. ...
- 【原理】Reids字典
I.字典的实现 Redis的字典使用哈希表作为底层实现. 1.1 哈希表 Redis字典所使用的哈希表结构定义如下: typedef struct dictht { // 哈希表数组 dictEntr ...
- 【集群】Redis的哨兵模式和集群模式
哨兵模式 哨兵模式是redis高可用的实现方式之一 使用一个或者多个哨兵(Sentinel)实例组成的系统,对redis节点进行监控,在主节点出现故障的情况下,能将从节点中的一个升级为主节点,进行故障 ...
- C# GDI+简单绘图
一.使用Pen画笔 Pen的主要属性有: Color(颜色),DashCap(短划线终点形状),DashStyle(虚线样式),EndCap(线尾形状), StartCap(线头形状),Width(粗 ...
- window环境mysql卸载不干净
停止MySQL服务1添加删除程序中卸载MySQL2到安装目录删除MySQL3删除:C:\Documents and Settings\All Users\Application Data\MySQL ...
- 【Shiro】五、Apache Shiro加密
Shiro提供了更好封装,更好使用的加密算法API,可以作为平时使用的一个工具类的预选方案. Shiro的密码学 基本特性 接口驱动,基于POJO 对JCE(Java Cryptography Ext ...
- kali开启禁止或删除ssh 开机启动
开启禁止或删除ssh 开机启动 # update-rc.d ssh enable #//开机启动 # update-rc.d ssh disable #//禁止开机启动 # update-rc.d - ...
- Angularjs实现简单的登陆框
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...
- 对于Final关键字的总结
1.final关键字可以用于成员变量.本地变量.方法以及类. 2. final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误. 3. 你不能够对final变量再次赋值. 4. ...