class按传递时分析

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

原文地址:https://www.cnblogs.com/mattins/p/3484308.html