为堆栈创建默认构造函数

时间:2015-04-22 16:41:51

标签: c++ visual-studio-2012 stack

我目前正在开发一个类的项目,它要求我们实现一个整数用作堆栈的计算器。我的默认构造函数有问题,我想知道我错过了什么。

OperandStack(int stackSize)
    {
        if (stackSize<=0)
            {cout<<"Must be positive"<<endl;}
        this->capacity=capacity;
        s =new double[stackSize];
        t=0;
    }

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

  

“我的默认构造函数出现问题,我想知道我错过了什么。”

default constructor不接受任何参数,或为所有参数声明默认值。引用链接的参考文档

  

默认构造函数

     

默认构造函数是一个构造函数,可以不带参数调用(使用空参数列表定义,或者为每个参数提供默认参数)。

因此,您的实现应如下所示:

class OperandStack {
public:
     OperandStack(int stackSize = 10) 
                             // ^^^^ declare a default value
     // Better use a member initializer list, instead of initializing claas
     // members inside the constructor's body:
     : capacity(stackSize), s(new double[stackSize]), t(0) {
        if (stackSize<=0) {cout<<"Must be positive"<<endl;}
        // ^^^^ Better use an exception instead of this
        //      output statement (it's OK for basic debugging)
     }
};