c++中形参为引用和非引用时调用构造函数

#include<iostream>

using namespace std;

class numbered
{
private:static int seq;
public:
	numbered(){ mysn = seq++; }
	numbered(const numbered&n){ mysn = seq++; }
	int mysn;
};

int numbered::seq = 0;

void f(const numbered &s)
{
	cout << s.mysn << endl;
}
//void f(const numbered s)
//{
//	cout << s.mysn << endl;
//}

int main(){
	numbered a, b = a, c = b;
	f(a); f(b); f(c);//结果为1,2,3。f里面参数传递的不是类对象而是类对象的引用,不再触发拷贝构造函数;传非引用时,numbered a调用一次构造函数,f(a)还要调用一次拷贝构造函数
	system("pause");
	return 0;

}

  

posted @ 2018-03-06 13:28  追逐更好的自己  阅读(455)  评论(0编辑  收藏  举报