【问题标题】:Questions regarding constructors关于构造函数的问题
【发布时间】:2014-06-13 11:00:05
【问题描述】:

我正在处理一项任务,它要求对我的继承类执行以下操作:

  • 将数据部分设置为“0”的无参数构造函数
  • 一个重载的构造函数,它接受一个字符串并将数据部分设置为传递给它的值。

我不完全理解,如果我能同时提供这两个例子,我将不胜感激。

我正在研究继承。

我的 Number.h 类通过继承。

#ifndef Number
#define Number

#include "Double.h"
#include "Integer.h"


class Number : public string

{


};

#endif

【问题讨论】:

  • 我们不是来帮你做功课的。
  • @MarcB 每个人都可以在某个时候得到一点帮助
  • 如果您表现出一些努力并且看起来您已经阅读了书中所需的材料,我们将为您提供帮助。我们不是来做作业的。

标签: c++ function class visual-c++ inheritance


【解决方案1】:
class Number : public string
{
public:
    Number() : string("0") { }
    Number(const string &str) : string(str) { }
};

但是,只要开头有以下2行,名称Number就会被预处理器替换。

#ifndef Number
#define Number

您应该为 #include 保护使用另一个宏名称。

【讨论】:

    【解决方案2】:

    您创建了类Number。现在您可以创建一个具有 2 个构造函数的新类(我称为 SpecialNumber)。第一个没有参数并将值设置为0,而另一个构造函数获取要用作类的值的参数。

    #ifndef NUMBER_H
    #define NUMBER_H
    
    class Number
    {
    private:
        int myValue;
    };
    
    class SpecialNumber : public Number
    {
    public:
        SpecialNumber()
            : myValue( 0 ) // fixed value
        {
        }
    
        SpecialNumber( int someValue )
            : myValue( someValue ) // value coming from a parameter
        {
        }
    }
    
    #endif
    

    【讨论】:

      【解决方案3】:
      public:
      Number::Number()
      {
          data = "0";
      }
      Number::Number(string a)
      {
          data = a;
      }
      

      【讨论】:

        猜你喜欢
        • 2011-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-06
        • 2010-10-01
        • 2010-11-09
        • 1970-01-01
        相关资源
        最近更新 更多