【问题标题】:Creating a default constructor for a stack为堆栈创建默认构造函数
【发布时间】:2015-04-22 16:41:51
【问题描述】:

我目前正在为一个类项目工作,该项目要求我们实现一个堆栈以将整数用作计算器。我的默认构造函数有问题,想知道我缺少什么。

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

感谢您的帮助。

【问题讨论】:

  • 默认 ctor 不接受任何参数 - 同样对于采用原语的 ctor,最好先标记然后显式
  • @Sarang 你能详细说明一下吗?我对构造函数的理解不是最好的,因为这是我第一次为堆栈实现一个。
  • 查看此链接了解默认 ctor en.cppreference.com/w/cpp/language/default_constructor的详细信息

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


【解决方案1】:

“我的默认构造函数有问题,我想知道我缺少什么。”

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)
     }
};

【讨论】:

    猜你喜欢
    • 2013-04-29
    • 2017-03-27
    • 2018-10-02
    • 2021-03-02
    • 2012-11-03
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多