怎么解疑C++对象传递实际应用问题
发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,这篇文章将为大家详细讲解有关怎么解疑C++对象传递实际应用问题,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++语言功能非常强大,不但能对各种程序设
千家信息网最后更新 2024年11月18日怎么解疑C++对象传递实际应用问题
这篇文章将为大家详细讲解有关怎么解疑C++对象传递实际应用问题,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
C++语言功能非常强大,不但能对各种程序设计提供支持,而且还具有面向对象的特征,极大的满足了开发人员的需求。在这里我们就先来了解一下C++对象传递的相关内容,大家可以从中学到不少东西。
如果函数的返回值是一个对象,有些场合用C++对象传递中的"引用传递"替换"值传递"可以提高效率。而有些场合只能用"值传递"而不能用"引用传递",否则会出错。
例如:
class String {⋯ // 赋值函数 String & operate=(const String &other); // 相加函数,如果没有friend 修饰则只许有一个右侧参数 friend String operate+( const String &s1, const String &s2); private: char *m_data; }
String 的赋值函数operate = 的实现如下:
String & String::operate=(const String &other) { if (this == &other) return *this; delete m_data; m_data = new char[strlen(other.data)+1]; strcpy(m_data, other.data); return *this; // 返回的是 *this 的引用,无需拷贝过程 }
对于赋值函数,应当用C++对象传递中的"引用传递"的方式返回String 对象。如果用"值传递"的方式,虽然功能仍然正确,但由于return 语句要把 *this 拷贝到保存返回值的外部存储单元之中,增加了不必要的开销,降低了赋值函数的效率。例如:
String a,b,c; ⋯ a = b; // 如果用"值传递",将产生一次 *this 拷贝 a = b = c; // 如果用"值传递",将产生两次 *this 拷贝 String 的相加函数operate + 的实现如下: String operate+(const String &s1, const String &s2) { String temp; delete temp.data; // temp.data 是仅含‘\0’的字符串 temp.data = new char[strlen(s1.data) + strlen(s2.data) +1]; strcpy(temp.data, s1.data); strcat(temp.data, s2.data); return temp; }
对于相加函数,应当用"值传递"的方式返回String 对象。如果改用"引用传递",那么函数返回值是一个指向局部对象temp 的"引用"。由于temp 在函数结束时被自动销毁,将导致返回的"引用"无效。例如:
c = a + b;
此时 a + b 并不返回期望值,c 什么也得不到,流下了隐患。
关于怎么解疑C++对象传递实际应用问题就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
对象
函数
C++
拷贝
内容
方式
实际
问题
应用
功能
场合
效率
文章
更多
知识
篇文章
不错
强大
东西
之中
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
魔兽世界怀旧服服务器2021
学校系统软件开发
湖南党性体检软件开发公司
维护网络安全微课课件
软件开发过程的详细介绍
数据库分页如何创建
信息网络安全英文名词
世界互联网科技感
ibm服务器主机测评
用友凭证打印设置数据库
网络安全专家测试支付宝完整版
服务器最高温度
网络安全法烟草
计算机网络技术大专生参军
自学网络技术成黑客
创新驱动网络安全
服务器ipv6可以防御吗
档案馆网络安全会商处置制度
专业技术人员网络安全学习资料
公安部网安局网络安全
武汉市租房网络安全
数据库和springboot
为知笔记 网络技术
并发 网络技术
软件开发核心素养
信创软件开发平台
彩票软件开发制作平台软件
成都销售软件开发
ea智能交易软件开发
政府网络安全培训的意义