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++中创建对象的时候加括号和不加括号的区别(转)的更多相关文章

  1. C++中创建对象的时候加括号和不加括号的区别

    c++创建对象的语法有----- 1 在栈上创建 MyClass a; 2 在堆上创建加括号 MyClass *a= new MyClass(); 3 不加括号 MyClass *a = new My ...

  2. 【转】new对象时,类名后加括号和不加括号的区别

    请看测试代码: #include <iostream> using namespace std; // 空类 class empty { }; // 一个默认构造函数,一个自定义构造函数 ...

  3. 函数基础重点掌握内容:创建函数、return返回单个值、return返回多个值、函数名加括号与不加括号的区别

    ##比较两个数大小 #有参函数!!! def compare(s,t): if s > t: print(s) else: print(t) f=compare compare(1000,30) ...

  4. Java中主类中定义方法加static和不加static的区别

     Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用(类名.方法),后者必须先实例化后用实例调用) 知识点:1.Getter and Setter 的应用 ...

  5. js中加“var”和不加“var”的区别

    JavaScript 拥有动态类型.这意味着相同的变量可用作不同的类型: var x // x 为 undefined var x = 6; // x 为数字 var x = "Bill&q ...

  6. Python调用函数加括号和不加括号的区别

    Python调用函数加括号和不加括号的区别 # -*- coding: utf-8 -*- #!/usr/bin/env python # @Time : 2018/7/3 10:03 # @Desc ...

  7. onclick时间加return和不加return的区别

    JAVASCRIPT在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置. 而该值决定了当前操作是否继续.当返回的是true时,将继续操作.当返回是 ...

  8. python中 函数名加括号与不加括号

    加括号是返回函数的结果,不加括号相当于函数的调用.

  9. new对象时,类名后加括号与不加括号的区别

    [1]默认构造函数 关于默认构造函数,请参见随笔<类中函数> 请看测试代码: 1 #include <iostream> 2 using namespace std; 3 4 ...

随机推荐

  1. Linux软件管理--RPM工具

    目录 Linux软件管理--RPM工具 Rpm基础概述: Rpm包安装管理 Linux软件管理--RPM工具 Rpm基础概述: RPM全称RPM Package Manager缩写,由红帽开发用于软件 ...

  2. 带你逐行阅读redux源码

    带你逐行阅读redux源码 redux版本:2019-7-17最新版:v4.0.4 git 地址:https://github.com/reduxjs/redux/tree/v4.0.4 redux目 ...

  3. oracle时间问题 与case then

    思路一 --select * from nls_session_parameters where parameter='NLS_DATE_LANGUAGE'; -- 修改会话的默认日期格式 ALTER ...

  4. RGB和十六进制转换

    1.十六进制换RGB 例:  var color = '#69ad52' let r = parseInt(“0px” + color.slice(1, 3))  //105 let g = pars ...

  5. Django学习笔记(三)视图

    构建网页内容 视图函数的return具有多种响应类型: 上述函数主要来自django.http,该模块是实现响应功能的核心. 实际开发中可用此模块实现文件下载功能,在index的urls.py和vie ...

  6. zk 后台调用前台点击事件

    Events.echoEvent(new Event(Events.ON_CLICK, view.getFellow("showYjdkhMessage"))); showYjdk ...

  7. 关于respond.js

    作用:可以让ie8及以下支持css3的媒体查询. 有几个问题: 1.由于浏览器的安全机制,Respond.js 不能在通过 file:// 协议(打开本地HTML文件所用的协议)访问的页面上发挥正常的 ...

  8. vue基础九

    1.使用组件 1.1注册 要注册一个全局组件,你可以使用 Vue.component(tagName, options). 例如: Vue.component('my-component', { // ...

  9. 【Docker】docker常用命令

    1.批量删除无tag镜像 docker images|grep none|awk '{print $3}'|xargs docker rmi 2.以特权模式运行容器 docker run --priv ...

  10. ABP的新旧版本

    新版本 https://abp.io/documents/abp/latest/Index https://github.com/abpframework/abp ABP is an open sou ...