C++ 调用默认构造函数 类基{ int i; 公众: base() { i=10; cout

C++ 调用默认构造函数 类基{ int i; 公众: base() { i=10; cout,c++,C++,第二个是声明一个返回基对象的函数a():-base a声明一个类型为base的变量a,并调用其默认构造函数(假设它不是内置类型) base a();声明一个函数a,该函数不接受任何参数并返回类型base 这是因为该语言基本上规定,在出现这种歧义的情况下,任何可以解析为函数声明的内容都应该如此解析。对于更复杂的情况,您可以搜索“C++最麻烦的解析” 因为这实际上我更喜欢新X;过新的X.(;)>;因为它与非新声明一致。C++中的< P>,可以用两种方式创建对象: 自动(静态) 动态的 第一个使用以下

第二个是声明一个返回基对象的函数a():-

base a
声明一个类型为
base
的变量
a
,并调用其默认构造函数(假设它不是内置类型)

base a();
声明一个函数
a
,该函数不接受任何参数并返回类型
base

这是因为该语言基本上规定,在出现这种歧义的情况下,任何可以解析为函数声明的内容都应该如此解析。对于更复杂的情况,您可以搜索“C++最麻烦的解析”


因为这实际上我更喜欢<代码>新X;过<代码>新的X.(;)>;<代码>因为它与非新声明一致。C++中的

< P>,可以用两种方式创建对象:

  • 自动(静态)
  • 动态的
  • 第一个使用以下声明:

    class base {
        int i;
    public:
        base()
        {
            i = 10;
            cout << "in the constructor" << endl;
        }
    };
    
    int main()
    {
        base a;// here is the point of doubt
        getch();
    }
    
    对象一离开当前范围就被删除

    动态版本使用指针,您有权删除它:

    base a; //Uses the default constructor
    base b(xxx); //Uses a object defined constructor
    

    应该是<代码> Base*a=新的基()/>代码>?这个答案与问题是否真的相关?你没有地址“代码> BASE BE())/CUD>使用C++中的默认构造函数动态分配对象的正确方法是什么?它是代码> BASE*A=新BASE()或
    base*a=new base;
    ?有什么区别吗?您可以在以下位置看到:
    new X;
    new X()的作用相同吗?
    
    base *a = new base(); //Creates pointer with default constructor
    base *b = new base(xxx); //Creates pointer with object defined constructor
    
    delete a; delete b;