zoukankan      html  css  js  c++  java
  • c++对象创建带括号与无括号的区别

    class Test
    {
    public:
      Test() {}
      Test(int a) {}
    }
    1、栈上创建对象
      1.1 无括号
        Test a; // 调用默认构造函数,栈上分配内存创建对象
      1.2 有括号
        Test a(); // 无任何意义,声明一个返回值为Test对象的无参函数
      1.3 有括号+参数
        Test a(2); // 调用构造函数Test(int a),栈上分配内存创建对象

    2、堆上创建对象
      2.1 无括号
        Test *a = new Test; // 调用默认构造函数(若由编译器生成则成员不初始化),堆上分配内存创建对象
      2.2 有括号
        Test *a = new Test(); // 调用默认构造函数(若由编译器生成则成员初始化),堆上分配内存创建对象
      2.3 有括号+参数
        Test *a = new Test(2); // 调用构造函数Test(int a),堆上分配内存创建对象
      2.4 系统内置类型
        new int;// 分配内存,未初始化
        new int();// 分配内存,初始化为0
        new int(2);// 分配内存,初始化为2
    在孤独中思考,在思考中成熟,在成熟中升华
  • 相关阅读:
    char类型细节
    Hibernate面试题
    线程
    IO流
    集合
    链表相关的一点东西
    正则表达式学习
    python中的变量域问题
    python的输出和输入形式
    python mutable 和 immutable
  • 原文地址:https://www.cnblogs.com/laogaoyang/p/5757453.html
Copyright © 2011-2022 走看看