【问题标题】:Is it possible to add integer type value in object of class in c++?是否可以在 C++ 中的类对象中添加整数类型值?
【发布时间】:2021-01-15 09:05:21
【问题描述】:

我想使用运算符重载或任何其他方法来增加价值。如果我有 class abc 那个类有 2 个整数数组,我想像这样添加值(abc object; object= object+4;)如果我这样做,那么 4 将被插入到数组中。

class abc{
 int array1[10];
 int array2[10];
 public:
 abc(int a[],int b[])
 {
     array1=a;
     array2=b;
  }
  };
  int main()
  {  
     int ar1[]={1,2,3};
     int ar2[]={4,5,6};
     abc object(ar1,ar2);
     object =object+4;
    }

如果我写 (object=object+4;) 那么这行将在 array1 的索引 3 处插入 4,这可能吗?

【问题讨论】:

  • 我相信有人会完全回答,但如果你用 std::vector<int> 替换你的数组,问题就会消失。
  • 很难理解你的意思。您显示的代码是否编译?至少使用std::arraystd::vector 作为类成员。如果您坚持使用 C 样式数组,构造函数需要知道它们的大小。我想你应该从重载operator+=开始,但是为此你需要阅读一本书、手册等。

标签: c++ arrays class operator-overloading


【解决方案1】:

你可以这样做:

class abc
{
    std::vector<int> array1;
    std::vector<int> array1;
public:
    abc(std::vector<int> a, std::vector<int> b) :
        array1(std::move(a)), array2(std::move(b))
    {}

    abc& operator += (int n) { array1.push_back(n); array2.push_back(n); return *this;} 
};

int main()
{  
    abc object({1, 2, 3}, {4, 5, 6});
    object += 4;
}

【讨论】:

  • 确实 - 看看 std::vector 是多么简单。赞成票来了。请注意按值传递参数的新方式,然后使用std::move
  • 没有矢量可以吗?
  • 没有向量,你必须跟踪大小(你已经没有在你的构造函数中无效)。
猜你喜欢
  • 2014-05-31
  • 2017-12-02
  • 2011-09-24
  • 2016-04-29
  • 1970-01-01
  • 2018-08-19
  • 2019-12-18
  • 1970-01-01
  • 2018-09-06
相关资源
最近更新 更多