关于引用参数
我书上看到个例子,大致是这样:
class ...
{
...
void fun(int &) //一个类成员函数
...
}
//成员函数定义
...::fun(int &t)
{
...
... = &t;
...
}
我想问,这t是引用参数吗?定义中的右值“&t”应该是取t的地址吧,这几个“&”是怎么回事?为什么要这么定义呢?
(例子是《面向对象程序设计及C++》人民邮电出版社,P212页的,例子中用了模板,为了看起来简洁就用int代替了)
[解决办法]
都是代表引用,如果是取地址那么前面就不会跟类型说明符了。
[解决办法]
在函数声明里的&代表引用参数。
最后一个&不是在函数声明里,所以是取地址。
况且C++的&操作符还可以重载。
至于为什么要这样规定……也许是c++的规定吧
[解决办法]
引用即别名,与原来的对象使用同样的存储单元,声明的同时必须定义,而且之后不能重新定义(在作用域里)
取地址是一种初始化指针的操作
[解决办法]
= &t;
这个是取地址。
[解决办法]
如果你想改变函数参数的值,
函数声明时就要用引用,或者指针。
不然他是不会改变的。。
比如
void fun(int &a)
{
a=3;
}
这个变了。
void fun(int a)
{
a=3;
}
这个没变。
[解决办法]
引用即别名
[解决办法]
看看引用最简单的一个例子,
交换两个数。。。。。。。。。。。
[解决办法]
只有作为参数时候才是引用,在函数内部使用是取地址。
[解决办法]
第一个和第二个是引用 第三个是取地址
还有如果是int不建议用引用 这是内置类型
有人肯定会说我要改他的值所以才用引用的-------那么就应该要用指针
c++之父说过 引用前面最好加const 不建议改引用类型的值,这样可以提高可读性
有人又会说了那我直接不用引用好了,这样和不用引用不是效果一样?
确实,但是这样省掉自定义类型的构造函数和析构函数 提高效率
[解决办法]