为什么在mfc中有些参数是引用型的

sunwen 2002-03-20 07:27:38
谁能解释一下并举一个例子说明非用引用型不可。
...全文
24 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Linux2001 2002-03-20
  • 打赏
  • 举报
回复
同意楼上的楼上的
北极猩猩 2002-03-20
  • 打赏
  • 举报
回复
使用引用传值还有效率的原因,因为使用引用相当于指针,不用调用构造函数来
构造新的对象。
还有,在能使用引用的地方尽量使用引用,因为引用不会产生指针的,null pointer问题(引用必须被初始化)
jishiping 2002-03-20
  • 打赏
  • 举报
回复
class 或 struct 的自我复制的构造函数就非用引用不可。
struct A
{
char* str;
A() { str = 0; }
A(const A& a);
~A() { delete[] str; }
};

A::A(const A& a)
{
if (a.str != 0) {
int len = strlen(a.str);
str = new char[len+1];
}
else
str = NULL;
if (str != NULL)
strcpy(str, a.str);
}

其它地方好像还没有非用引用不可的,因为可以用指针替代。关键一点,
你还没有搞清引用的含义。
zhang_qxian 2002-03-20
  • 打赏
  • 举报
回复
引用是C++中的概念,初学者容易把引用和指针混淆一起。一下程序中,n是m的一个引用(reference),m是被引用物(referent)。
int m;
摘自......

int &n = m;
n相当于m的别名(绰号),对n的任何操作就是对m的操作。例如有人名叫王小毛,他的绰号是“三毛”。说“三毛”怎么怎么的,其实就是对王小毛说三道四。所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。
引用的一些规则如下:
(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。
(2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。
(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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