本文将详细讲解如何解决C对象传输的实际应用。文章内容质量很高,我就分享给大家作为参考。希望大家看完这篇文章后对相关知识有一定的了解。
c语言非常强大,不仅可以支持各种编程,还具有面向对象的特点,极大地满足了开发者的需求。这里我们来看看C对象传输的相关内容,从中可以学到很多东西。
如果函数的返回值是一个对象,在某些情况下,用C对象传递中的“引用传递”替换“值传递”可以提高效率。但是,在某些情况下,你只能使用“价值转移”而不是“参考转移”,否则你会出错。
例如:
class string {//赋值函数stringpere=(conststringheart);//加法函数,如果没有friend修改,只有一个右参数friendstringpere(const strings 1,const strings 2);private:char * m _ data}赋值函数operate=of } String的实现如下:
stringstring : operation=(conststringThEr){ if(this==other)返回* thisdeletem _ datam _ data=new char[strlen(other . data)1];strcpy(m_data,other . data);返回*这个;//返回*this的引用,无需复制过程。}对于赋值函数,在C对象传递中应该以“按引用传递”的方式返回String对象。如果使用“值传递”,虽然函数仍然是正确的,但return语句需要将此复制*到存储返回值的外部存储单元,这增加了不必要的开销,降低了赋值函数的效率。例如:
斯特林加,b,c;a=b;//如果使用“价值转移”,将产生一份*本,a=b=c;//如果使用“值传递”,它将产生*这个的两个副本。String,oper的加法函数的实现如下:String oper(const strings 1,const strings 2){ String Temp;deletetemp.data//temp.data仅为lsquo\在…之时数据=newchar [strlen (S1)。数据)斯特伦(S2。数据)1];strcpy(temp.data,S1 . data);strcat(temp.data,S2 . data);returntemp}对于加法函数,应该以“值传递”的方式返回String对象。如果改为使用“引用传递”,函数的返回值是指向本地对象temp的“引用”。由于temp在函数结束时被自动销毁,返回的“引用”将无效。例如:
c=a b;此时A和B都没有回到预期值,C一无所获,留下了隐患。
如何解决C对象转移的实际应用问题就分享到这里,希望。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/52394.html