返回信息流刚学C++,对于有些需要用引用,有些不需要搞不太明白:
下面两个例子,请直接跳到///////////////////////////////////////处看
// score.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "string.h"
#include "stdio.h"
class Stud
{
char name[10];
int deg;
char level[7];
public:
Stud(char na[],int d)
{
strcpy(name,na);
deg=d;
}
char *getname() {return name;}
void trans(Stud s)/////////////////////////////////////////////////////////////////这里为什么一定要用引用&s
// friend void trans(Stud &s)
{
if(s.deg>=90)
strcpy(s.level,"优");
else if(s.deg>=80)
strcpy(s.level,"良");
else if(s.deg>=70)
strcpy(s.level,"中");
else if(s.deg>=60)
strcpy(s.level,"及格");
else strcpy(s.level,"不及格");
}
void disp()
{
printf("%s的成绩是%d,%s",name,deg,level);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Stud st[]={Stud("王华",78),Stud("李明",92),Stud("张伟",62),Stud("孙强",88)};
for(int i=0;i<4;i++)
{
// trans(st[i]);//用友元函数时
st[i].trans(st[i]);//不用友元函数时
st[i].disp();
}
return 0;
}
// yingyongqubie.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "stdio.h"
class sample
{
int x,y;
public:
sample(){};
sample(int x1,int y1)
{
x=x1;y=y1;
}
void copy(sample &s)///////////////////////////////////////////////////而这里却可用一般的参数,s
{
x=s.x;
y=s.y;
}
void disp()
{
printf("x=%d,y=%d",x,y);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
sample s(5,10),t;
s.disp();
t.copy(s);
t.disp();
return 0;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #48426同步于 2010/12/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
小菜问一下C++参数引用用法
vinc21936
2010/12/28镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
if(s.deg>=90)
strcpy(s.level,"优");
因为要改变s本身啊
【 在 vinc21936 (菊花惨) 的大作中提到: 】
: 刚学C++,对于有些需要用引用,有些不需要搞不太明白:
: 下面两个例子,请直接跳到///////////////////////////////////////处看
: // score.cpp : 定义控制台应用程序的入口点。
: ...................
引用传递的是参数的地址,也就是实参。这样在函数中对这个参数做的改变就是对此地址中内容进行改变,也就是对传进来的这个参数进行改变。
普通的参数是一个形参,传递给函数的是参数的内容,它实际上是一个分配在栈中的临时对象,和调用函数时传进来的参数没有任何关系