我有一个有两个向量的类: anint
和 an Str
。现在我想定义一个复制构造函数,以便颠倒元素的顺序;例如,如果a=(1,Hello),(2,World)
我写auto b=a;
我得到b=(2,world),(1,hello)
。这是完美的工作。我遇到的问题是重载=
运算符,以便使用复制构造函数。这是我的类加上复制构造函数:
class grade
{
private:
static int copies;
std::vector<int> i;
std::vector<std::string> s;
public:
grade() {copies++;};
grade (int , std::string );
void printval();
void adder(int , std::string );
int getcount();
grade(grade & obj)
{
std::vector<std::string>::reverse_iterator strIt = obj.s.rbegin();
for (std::vector<int>::reverse_iterator numIt=obj.i.rbegin();
numIt!=obj.i.rend(); ++numIt)
{
this->adder(*numIt, *strIt);
strIt++;
}
}
grade operator =(grade );
};
当我重载=
运算符时,会调用构造函数,问题是没有将 valur 传递给 LHS 变量。这里是重载的=
。
grade grade::operator=(grade cpy)
{
grade newer = cpy; //Calls the copy constructor as expected
return cpy; //No error but blank value is returned to the LHS variable.
}
我的主要功能是:
int main()
{
grade c2(1,"Hello");
grade c1;
c2.adder(4,"World");
c2.printval();
std::cout<<std::endl;
grade c3 = c2;
c3.printval();
std::cout<<std::endl;
c1 = c2;
std::cout<<std::endl;
c1.printval();
return 0;
}
为什么c1
一直空白??