c++ 指针高手赐教(来自 <> )

yuyuancheng 2007-05-02 10:37:56
template <typename T>
inline T* const& max (T* const& a,T* const& b)
{
return *a < *b ? b : a;
}//来自 <<C++ templates>> 第17页

上面模板中的返回类型及参数类型 既有 引用 又有 指针,(T* const& a)
这样做有什么好处?
...全文
359 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Obsidianhom 2007-05-03
  • 打赏
  • 举报
回复
提高效率,用const防止传入参数被修改,指针是传地址,不用复制一份传入参数的副本,而值传送要复制参数副本,所以可以提高效率
0黄瓜0 2007-05-03
  • 打赏
  • 举报
回复
加上那个const的好处:

明确告诉函数的调用者,我这个函数的指针虽然是实参指针的引用,但函数不会修改它的指向,同时会修改它指向的内容,调用者有个明确的逻辑概念.

明确告诉函数的编写者,这个函数在逻辑上不会修改实参指针的指向,同时会修改它指向的内容,如果编写者不小心修改了指针的指向,编译时会报错.

那个const不加也是可以的,函数的功能也不会爱影响.但没有上面两条好处.
返回值加const也是同样的道理.
0黄瓜0 2007-05-02
  • 打赏
  • 举报
回复
T* const& a
表示函数中的指针就是外面的实参,且指向不变,指向的内存内容可变.
believefym 2007-05-02
  • 打赏
  • 举报
回复
上面两个函数调用反了,呵呵
believefym 2007-05-02
  • 打赏
  • 举报
回复
class T
{
public:
int data;
};
void f(T const&t1,T const&t2)
{
//t1 = t2;//illegal
cout<<t1.data<<"\t"<<t2.data;
}
f(&t1,&t2);
-------------------------------

void f(T* const&t1,T* const&t2)
{
//t1 = t2;//illegal
cout<<t1->data<<"\t"<<t2->data;
}
f(t1,t2);
believefym 2007-05-02
  • 打赏
  • 举报
回复
a、b不可变
yuyuancheng 2007-05-02
  • 打赏
  • 举报
回复
那么const后面的引用呢?
monkeywuming 2007-05-02
  • 打赏
  • 举报
回复

T表示类型,而T*当然就是T类型指针~ ~~至于好处当然就是指针的好处
int 定义int结构
int* 可以用来指向各种int的结构

至于const是修饰符,在此处起的作用是:可以防止所修饰的对象不被修改!
jackmtlee 2007-05-02
  • 打赏
  • 举报
回复
防止函数产生副本,影响程序性能,尤其是对象较大,或是有递归函数调用的时候更应该这样做.
logo0775 2007-05-02
  • 打赏
  • 举报
回复
人们吃饭又有什么好处?浪费钱.浪费青春,浪费精力,浪费电,浪费水,浪费.........
晨星 2007-05-02
  • 打赏
  • 举报
回复
其实都差不多,可以有引用到int的引用类型,同样也可以的有引用到指针类型的引用类型。
晨星 2007-05-02
  • 打赏
  • 举报
回复
指针的引用就是指针的引用,为什么一定要问“有什么好处”?
那整数做参数时又有什么好处?为什么有时候人们用整数作参数?
yuyuancheng 2007-05-02
  • 打赏
  • 举报
回复
那样做有什么好处?
  • 打赏
  • 举报
回复
指针的引用啊
ff5dq4 2007-05-02
  • 打赏
  • 举报
回复
返回一个const的指针变量引用的

65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧