网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月07日漏签0天
c++吧 关注:656,994贴子:2,118,234
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 25回复贴,共1页
<<返回c++吧
>0< 加载中...

求教: 什么时候参数才应该使用 const T &

  • 只看楼主
  • 收藏

  • 回复
  • leesunshine007
  • ==
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
一直没有一个确切的概念: 什么时候 传递参数时才应该使用 const T &.
只知道 传递大的对象时, 为了避免临时变量 生成 及copy, 使用 const T & rhs. 但是多大的对象才算是大对象呢? 如果类中只有一个 char c 成员变量 , 需不需要?
还有, 之前在哪看到过 & 是用指针实现的(不知道对不对, 先假设是这样), 如果 指针 是 4字节的话, 是不是 凡是 小于4字节的类型 就不应该 const T &, 而直接 T ,
像这样:
int Fn (short size);
int Fn (char c);
如果是这样的话, 那 double 类型呢? sizeof (double) >= sizeeof (void *)
应该是除了占用 空间之外 还要考虑 临时变量的建立之类的吧.
但是难道就没有一个标准吗?
凡是 内建类型 就 T, 自定义类型就 const T & ?
如果是这样的话, 如果 我对 char 也使用 const,
像这样传递, const char & c , 性能 什么的会有什么影响 ?
请大家指点.. 谢.


  • configure2010
  • ==
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
当T是一个类,涉及到一系列构造析构的时候就算大了,具体要说到什么时候才算大,这个不太好说。
但是既然加个&号也不是什么麻烦事,不如养成这种比较好的习惯。


2026-05-07 04:27:30
广告
不感兴趣
开通SVIP免广告
  • 蒙面侍卫
  • +
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1、既然使用引用是避免复制副本,那么无论原对象是多大(比如一个字节),都会减少对空间需要,因为原对象+副本都会比原对象大
2、多大的对象才算是大对象,这个没有定论,具体看你执行什么操作。


  • 我是不是师兄
  • &
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
为了能传入一个 1 而不是一个 a=1 之后的 a


  • 蒙面侍卫
  • +
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
网络不太稳定,详细给你说一下。说一句发一句。


  • 蒙面侍卫
  • +
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1、避免传入的参数在函数内部改变
void set (const string& str)
{
。。。。
str="12";
}


  • 蒙面侍卫
  • +
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
2、扩大参数适用范围
void set (string& str)
{
.....
}
int main()
{
const string str="123"; // 不行
set(str);//set("123")也不行
return 0;
}
//////////////////////反过来可以//////////////////////
void set (const string& str)
{
}
int main()
{
string str="123";
set(str);
return 0;
}


  • 蒙面侍卫
  • +
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
3、有些对象不能复制
ofstream print(ofstream); // 打印函数:参数复制
out2 = print(out2); // 错误: 不能复制流对象


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 25回复贴,共1页
<<返回c++吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示