zoukankan      html  css  js  c++  java
  • C++中创建对象的时候加括号和不加括号的区别(转)

    c++创建对象的语法有-----

    1 在栈上创建 MyClass a;

    2 在堆上创建加括号 MyClass *a= new MyClass();

    3 不加括号 MyClass *a = new MyClass;

    4.---------------MyClass a();声明了一个返回值为MyClass类型的无参函数。

     1 #include <iostream>
     2 class MyClass
     3 {
     4 public:
     5     MyClass() 
     6     { 
     7         std::cout << "Hello MyClass!" << std::endl; 
     8     }
     9     MyClass(int i):num(i)
    10     {
    11         std::cout << "Hello MyClass!------int" << std::endl; 
    12     }
    13  
    14     void MyMethod() 
    15     { 
    16         std::cout << "输出成员num: " <<num << std::endl; 
    17     }
    18  
    19 private:
    20     int num;
    21 };
    22 int main()
    23 {
    24     //---------------对于调用构造函数
    25     MyClass c1;//表示使用不带参数的构造函数,或者有默认参数值的构造函数。
    26     MyClass c2();//不会调用无参构造函数,各种情况下该处是声明一个返回值为MyClass类型的函数而已
    27     MyClass c3(1);//调用参数为int的构造函数
    28     /*---------------对于new关键字加括号和不加括号的区别---
    29     1.对于自定义类型来说没有区别,都是使用默认构造函数
    30     2.对于内置类型来说加括号会初始化
    31     */
    32     std::cout<<std::endl;
    33     MyClass *c4 = new MyClass();
    34     c4->MyMethod();
    35     MyClass *c5 = new MyClass(1);
    36     c5->MyMethod();
    37     MyClass *c6 = new MyClass;
    38     c6->MyMethod();
    39  
    40     //内置类型
    41     std::cout<<std::endl;
    42     int *pint1 = new int(1);
    43     int *pint2 = new int();
    44     int *pint3 = new int;
    45  
    46     std::cout<<*pint1<<" "<<*pint2<<" "<<*pint3<<std::endl;
    47     return 0;
    48 }

    输出:

    结论:new 关键字创建对象时   对于内置类型:加括号会初始化,不加括号不初始化;对于自定义类型,都会调用默认构造函数,加不加括号没区别。

    新战场:https://blog.csdn.net/Stephen___Qin
  • 相关阅读:
    【原创】μC/OS Ⅱ工程中MAKETEST.BAT文件的改进与优化
    网络号和主机号等的分析和计算
    QQ电脑管家加速升级版便携版
    ARM发展历史
    μC/OS Ⅱ之任务就绪表的操作_2012.5.31
    删除word中的多余空行
    μC/OS II安装调试指南(带图解说明)
    WPF简单的User Control
    How to Databind SelectedItems of the ListPicker and RecurringDaysPicker
    数组排序
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/11619897.html
Copyright © 2011-2022 走看看