传引用方式传递对象
来源:互联网 发布:淘宝教育网 编辑:程序博客网 时间:2024/06/06 03:25
以传引用方式传递对象,特别是自定义类型
1.可以提高效率
例子:
Person是基类,Student继承自Person
传值方式函数: bool validateStudent(Student s);
传引用方式函数:bool validateStudent(const Student &s);
Student plato;
bool platoIsOK = validateStudent(plato);
以传值方式传递plato,将会执行一次Person的copy构造函数,一次Student的copy构造函数。当函数内德Student复件被销毁时,又将调用它们的析构函数。
以传引用方式传递plato,没有任何构造函数或者析构函数被调用,因为没有任何新对象被创建。
2.可以防止对象切割
对象切割:当一个derived class对象以传值方式传递并被当做一个base class对象,base class的copy构造函数会被调用,而造成传入的对象就像个基类对象,丧失了子类对象的所有特性。
例子:
Person是基类,Student继承自Person
传值方式函数: bool validateStudent(Person s);
传引用方式函数:bool validateStudent(const Person &s);
Student plato;
bool platoIsOK = validateStudent(plato);
传值方式,plato传入后其副本将是一个基类对象,丧失子类对象特性,传递失败。。。
传引用方式,传入的是什么对象就是什么对象,因为没有构造函数被调用
3.函数绝对不要返回指针或者引用指向一个栈对象;
函数绝对不要返回引用指向一个堆对象,因为无法获取其引用背后的那个指针,将导致内存泄露;
函数不要返回指针或者引用指向一个局部静态对象(而有可能同时需要多个这样的对象)//P94
- 传引用方式传递对象
- Java String对象以“引用”方式被传递
- 以引用的方式传递参数避免对象切割
- C++的异常对象按引用方式被传递
- 引用的传递方式
- 对象的引用传递
- 对象引用传递
- 面向对象 引用传递
- 面向对象 引用传递
- 面向对象,引用传递
- 对象传递和引用
- 引用传递(传递对象的引用)
- (基本数据类型值+对象)参数传递方式+对象的引用和拷贝
- 传值方式传递异常对象
- android 传递对象方式
- C++ 参数传递方式:值传递,引用传递,指针传递
- 函数的传参方式有值传递和地址传递,地址传递又分为指针传递和引用传递。
- 对象引用方式总结
- 以对象管理资源----智能指针
- Delphi TClientDataSet 使用方法_详解
- delete p和delete[] p的区别
- 解决Xcode4删除文件后missing file警告
- 使用飞信API 发送 短信
- 传引用方式传递对象
- 如何使acrobat reader打开指定页?
- Malloc与new的区别
- 类占用的内存空间
- 用概率来估算圆周率
- Frederick Brooks: 计算机科学家的使命是制造工具 II, 翻译连载第4部分
- 在不预览的情况下打印RDLC报表
- 图相关概念,存储方式,应用
- 位运算应用口诀和实例