class FEF{
public:
int a;
FEF(int a,int b){
this->a = a*b;
}
};
void mam(FEF a){
printf("%d A
", a.a); //72
}
int _tmain(int argc, _TCHAR* argv[]){
FEF f(34,2);
printf("%d M
", f.a); //72
mam(f);
}
c++的类按值方式传递会再次创建一个类,并用传来的类的初始化参数进行初始化
上面的代码
_tmain 的FEF 与 mam的 FEF 是两个不同的地址。
在c里如果struct以值的方式传递,会将当前struct的每项值赋值于新struct,C++里算是多了一步 初始化赋值。
void mam(FEF &a){
printf("%d A
", a.a); //72
}
加了 与符号后(C++专用),可以按值传递,函数会去取其地址,成为变相按引用传递