c++ : class type reference operator= 用法
c++ : class type reference operator= usage
这是我的第一个 post 如果格式不正确请理解 X)
因此,在我的 class 中,我需要使用 operator= 函数使 class 对象等于相同 class.[=12= 的第二个对象]
class Car
{
private :
int a;
int b;
public :
void set(int x, int y)
{a = x;
b = y;
}
void output()
{cout << a << " " << b << endl;
}
Car & operator=(const Car & carB)
{set(int c, int d);
}
};
using namespace std;
int main()
{
Car car1(1, 2);
Car car2;
car2=car1;
car2.output();
return 0;
}
我知道 Car & operator=(const Car & carb) 函数允许我使 car2 等于 car 1。但是,我不太了解这里函数的类型。
为什么函数不无效?参考符号(两者)在此代码中的作用是什么?
我正在学习第一门计算机语言的第二个季度。请帮忙!
谢谢! :]
这叫做 assignment operator
,您不需要实现它,因为它默认存在。如果你在 class 中有指针,你可以实现你自己的 assignment operator
和 copy constructor
来进行深拷贝而不是浅拷贝。
参考符号的意思是 return 通过引用允许函数调用位于调用的左侧,并允许像 A = B = C
.
这样的级联赋值
最后一件事...您在 assignment operator
中的代码是错误的。应该是这样的:
set(carB.a, carB.b);
函数的类型不是 void 因为 C++ 允许这样的语句:
A = B = C;
这条语句执行后,所有三个变量都将具有相同的值。也就是说,
A = (B = C);
要求 B=C
return 与 A
.
类型相同的东西
参考符号('%')是干什么的,自己查课本吧。
这是我的第一个 post 如果格式不正确请理解 X)
因此,在我的 class 中,我需要使用 operator= 函数使 class 对象等于相同 class.[=12= 的第二个对象]
class Car
{
private :
int a;
int b;
public :
void set(int x, int y)
{a = x;
b = y;
}
void output()
{cout << a << " " << b << endl;
}
Car & operator=(const Car & carB)
{set(int c, int d);
}
};
using namespace std;
int main()
{
Car car1(1, 2);
Car car2;
car2=car1;
car2.output();
return 0;
}
我知道 Car & operator=(const Car & carb) 函数允许我使 car2 等于 car 1。但是,我不太了解这里函数的类型。 为什么函数不无效?参考符号(两者)在此代码中的作用是什么?
我正在学习第一门计算机语言的第二个季度。请帮忙! 谢谢! :]
这叫做 assignment operator
,您不需要实现它,因为它默认存在。如果你在 class 中有指针,你可以实现你自己的 assignment operator
和 copy constructor
来进行深拷贝而不是浅拷贝。
参考符号的意思是 return 通过引用允许函数调用位于调用的左侧,并允许像 A = B = C
.
最后一件事...您在 assignment operator
中的代码是错误的。应该是这样的:
set(carB.a, carB.b);
函数的类型不是 void 因为 C++ 允许这样的语句:
A = B = C;
这条语句执行后,所有三个变量都将具有相同的值。也就是说,
A = (B = C);
要求 B=C
return 与 A
.
参考符号('%')是干什么的,自己查课本吧。