用c++最多的毛病就是这些可以解决收集方法

用c++最多的毛病就是这些可以解决收集方法

ID:10862022

大小:30.25 KB

页数:21页

时间:2018-07-08

用c++最多的毛病就是这些可以解决收集方法_第1页
用c++最多的毛病就是这些可以解决收集方法_第2页
用c++最多的毛病就是这些可以解决收集方法_第3页
用c++最多的毛病就是这些可以解决收集方法_第4页
用c++最多的毛病就是这些可以解决收集方法_第5页
资源描述:

《用c++最多的毛病就是这些可以解决收集方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++各种怪毛病亲是不是也染上了无法解决的事看看这个专业的C++代码都大量使用了引用。C++的引用是另外一个变量的别名。对引用的修改都会改变该引用所指向变量的值。可以把引用看成是一种隐式的指针,它可以免除获取变量地址和对指针解除引用的麻烦。也可以把引用看作是原变量的另一个名字。可以创建独立的引用变量、使用类中的引用数据成员、接受作为传递给函数和方法的参数、从函数和方法返回引用。万能营销 万能群发(1).引用变量:必须在创建时对其初始化。intx=3;int&xRef=x;xRef=10;//x的值修改为10如果在类外声明的引用变量而不初始化,这是不允许的。int&yRef;//err

2、or必须在分配引用时对其初始化。通常,引用是在声明是分配的,不过引用数据成员可以在包含该成员的类的初始化列表中进行初始化。除非引用指向一个const值,否则不能创建指向未命名值的引用。int&unnameRef=5;//errorconstint&unnameRef=5;ok引用总是指向初始化时指定的那个变量。一旦创建引用,就不能再修改了。intx=3,y=5;int&xRef=x;xRef=y;//xRef引用没有指向y,仍然是指向x,只是x的值修改成y的值5了。你或许希望在赋值时取y的地址来绕过这条限制:intx=3,y=5;int&xRef=x;xRef=&y;//error,

3、y的地址是指针,而xRef是int变量的引用,而不是指针的引用对于下面会怎么样呢?intx=3,y=5;int&xRef=x;int&yRef=y;xRef=yRef;//xRef引用没有指向y,仍然是指向x,只是x的值修改成y的值5了。综上所述:引用在初始化后就不能修改而指向别的变量,只能修改其指向的变量的值。指针引用和引用指针:下面是一个指向int指针的引用的例子int*intP;int*&ptrRef=intPptrRef=newint;*ptrRef=5;注意,取引用的地址和其引用所指向的变量的地址,这二者结果是一样的。intx=3;int&xRef=x;int*xPtr=&

4、xRef;//等价于int*xPtr=&x*xPtr=100;注意:不能声明指向引用的引用,也不能声明引用指针(指向引用的指针)。intx=3;int&xRef=x;int&&doubleRef=xRef;//errorint&*refPtr=&xRef;//error(2).引用数据成员:类的数据成员可以是引用。但是如果引用不指向其他某个变量,这样的引用是无法存在的。因此,必须在构造函数初始化列表中初始化引用数据成员,而不是在构造函数体中完成初始化。(3).引用参数:C++不常使用独立的引用变量或者引用数据成员。引用最通常的用法是作为函数和方法的参数。voidswap(int&fi

5、rst,int&second){  inttemp=first;  first=second;  second=temp;}而下面的函数达不到效果voidswap(intfirst,intsecond){  inttemp=first;  first=second;  second=temp;}我们知道不能使用常量来初始化引用变量,与此类似,不能把常量作为实参传递给采用传引用为参数的函数。swap(3,5);//error来自指针的引用:如果把一个指针传递给函数或方法,而该函数或方法需要的是一个引用。在此种情况下,简单地对指针进行解除引用,从而把指针转化为引用。intx=3,y=5;

6、int*xp=&x,*yp=&y;swap(*xp,*yp);传值和传引用:如果想修改参数,并希望这些修改反映到函数或方法的实参变量上,此时就应该采用传引用。但是,不应该限制为只是在这种情况下才采用传引用。传引用可以避免复制函数实参,在某些情况下能带来二个好处:a.效率。复制大的对象和结构时可能会花费很长的时间。传引用只向函数或方法传递指向对象或结构的指针。b.正确性。不是所有的对象都允许传值。即使允许传值,也不见得就能正确地支持深复制。我们知道要支持深复制,有动态分配内存的对象必须提供定制的复制构造函数。如果想发挥这二个优点,同时不想改变原来的对象,可以在前面加上const。传引用

7、的这些优点意味着,对于简单内置类型,不需要修改实参,就应当使用传值。在其他的情况下可以考虑传引用。产品推广软件 企业推广软件(4).引用返回类型:从函数或方法返回引用。这样做的主要原因是出于效率的考虑。不是返回一个完整的对象,而是从函数或方法返回对象的引用,这样记忆可以避免不必须要的复制。当然,只能当前对象在函数或方法结束仍然存在才可以使用此技术。注意:必要返回函数或方法中在栈上创建的变量的引用。因为函数或方法在结束时会撤销这些变量。函数中在堆上分配的变量

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。