欢迎来到天天文库
浏览记录
ID:38165789
大小:52.93 KB
页数:4页
时间:2019-06-03
《C++中对象的常引用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、【C++中对象的常引用】直接传递对象名用对象名做函数参数时,在函数调用时将建立一个新的对象,它是形参对象的拷贝。================下面给出一个直接传递对象名的例子程序1.1================== 1.#include 2.using namespace std; 3.class Time 4.{ 5. public: 6. Time(int,int,int);//构造函数 7. void Print();//输出信
2、息函数 8. void reset(Time t);//重置函数 9. private: 10. int year; 11. int month; 12. int day; 13.}; 14.Time::Time(int y,int m,int d) 15.{ 16. year=y; 17. month=m; 18. day=d; 19.} 20.void Time::Print()
3、21.{ 22. cout<4、eset(t1);//重置t1中的数据成员 35. t1.Print();//输出t1中的数据成员 36. return 0; 37.} 运行结果: 从运行结果来看,reset函数并没有起到作用。实参把值传递给形参,二者分别占不同的存储空间。无论形参是否修改都不会到实参的值。这种形式的虚实结合,要产生实参的拷贝,当对象的规模比较大的时候,则时间开销和空间开销都可能很大。因此,这种方法虽然可行,但是并不提倡这种用法~形参为对象的引用如果形参为对象的引用名,实参为对象名,则在调用函数进行虚实结5、合时,并不是为形参另外开辟一个存储空间(常称为建立实参的一个拷贝),而是把实参变量的地址传给形参(引用名),这样引用名也指向实参变量。对于程序1.1而言,我们只需要将reset函数的形参声明为对象的引用即可。 1.#include 2.using namespace std; 3.class Time 4.{ 5. public: 6. Time(int,int,int);//构造函数 7. void Print();//输出信息函数 86、. void reset(Time &t);//重置函数 ============对这一行代码进行了修改====================== 9. private: 10. int year; 11. int month; 12. int day; 13.}; 14.Time::Time(int y,int m,int d) 15.{ 16. year=y; 17. month=m; 18. 7、 day=d; 1.} 2.void Time::Print() 3.{ 4. cout<8、 Time t1(12,12,12); 15. t1.Print(); 16. t1.reset(t1); 17. t1.Print(); 18. return 0; 19.} 运行结果: 形参为对象的常引用如果我们在声明函数的参数为对象引用的时候,还可以将它声明为const(常引用) 1.void reset(const Time &t); 则
4、eset(t1);//重置t1中的数据成员 35. t1.Print();//输出t1中的数据成员 36. return 0; 37.} 运行结果: 从运行结果来看,reset函数并没有起到作用。实参把值传递给形参,二者分别占不同的存储空间。无论形参是否修改都不会到实参的值。这种形式的虚实结合,要产生实参的拷贝,当对象的规模比较大的时候,则时间开销和空间开销都可能很大。因此,这种方法虽然可行,但是并不提倡这种用法~形参为对象的引用如果形参为对象的引用名,实参为对象名,则在调用函数进行虚实结
5、合时,并不是为形参另外开辟一个存储空间(常称为建立实参的一个拷贝),而是把实参变量的地址传给形参(引用名),这样引用名也指向实参变量。对于程序1.1而言,我们只需要将reset函数的形参声明为对象的引用即可。 1.#include 2.using namespace std; 3.class Time 4.{ 5. public: 6. Time(int,int,int);//构造函数 7. void Print();//输出信息函数 8
6、. void reset(Time &t);//重置函数 ============对这一行代码进行了修改====================== 9. private: 10. int year; 11. int month; 12. int day; 13.}; 14.Time::Time(int y,int m,int d) 15.{ 16. year=y; 17. month=m; 18.
7、 day=d; 1.} 2.void Time::Print() 3.{ 4. cout<8、 Time t1(12,12,12); 15. t1.Print(); 16. t1.reset(t1); 17. t1.Print(); 18. return 0; 19.} 运行结果: 形参为对象的常引用如果我们在声明函数的参数为对象引用的时候,还可以将它声明为const(常引用) 1.void reset(const Time &t); 则
8、 Time t1(12,12,12); 15. t1.Print(); 16. t1.reset(t1); 17. t1.Print(); 18. return 0; 19.} 运行结果: 形参为对象的常引用如果我们在声明函数的参数为对象引用的时候,还可以将它声明为const(常引用) 1.void reset(const Time &t); 则
此文档下载收益归作者所有