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++专用),可以按值传递,函数会去取其地址,成为变相按引用传递