首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于引用参数,该如何解决

2012-04-01 
关于引用参数我书上看到个例子,大致是这样:class ...{...void fun(int &)//一个类成员函数...}//成员函数

关于引用参数
我书上看到个例子,大致是这样:
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 不建议改引用类型的值,这样可以提高可读性

有人又会说了那我直接不用引用好了,这样和不用引用不是效果一样?
确实,但是这样省掉自定义类型的构造函数和析构函数 提高效率
[解决办法]

探讨

引用:
...
确实,但是这样省掉自定义类型的构造函数和析构函数 提高效率

这句话怎么理解?

[解决办法]
函数中的t是因为
下面那个是取址吧···

热点排行