c++中使用一个对象做函数参数时,形参中加‘&’与不加‘&’有什么区别

xanarry 2014-04-20 04:12:30
在c++中使用一个对象做函数参数时,形参中加‘&’与不加‘&’有什么区别呀?还有就是引用与指针作参数的区别?
比如这这个代码中加&与不加&结果都是一样的!
#include <iostream>
using namespace std;

class Date;//因为在Time中要用Date类,但是还没有定义,所以先声明

class Time
{
private:
int hour;
int min;
int sec;
public:
Time(int h, int m, int s):hour(h), min(m), sec(s){}
void display_time(Date t);//在‘t’前面加‘&’和不加运行结果都是一样的
};

class Date
{
private:
int year;
int month;
int day;
public:
Date(int y, int m, int d):year(y), month(m), day(d){}
friend class Time;
};

void Time::display_time(Date t)//在‘t’前面加‘&’和不加运行结果都是一样的
{
cout << "Date: " << t.year << "-" << t.month << "-" << t.day << endl;
cout << "Time: " << hour << ":" << min << ":" << sec << endl;
}

int main(int argc, char const *argv[])
{
Time t1(12, 23, 34);
Date d1(2013, 12, 16);
t1.display_time(d1);//将对象d1传递给Time中的display函数
return 0;
}
...全文
6152 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
linlinxi007 2014-04-21
  • 打赏
  • 举报
回复 1
顶1楼 加&是引用类型,不加就是普通的“传值”。引用和指针在传值时,都会改变原有的内容,区别不大。效率上,引用高点
drlqyy 2014-04-20
  • 打赏
  • 举报
回复
引用 & 可以修改被费用的数据,与指针差不多,按值传递在函数内部修改了,但在函数外部还是原先那个值。 你那个display_time函数只做了输出,没有对数据修改,如果有修改的话,就不一样了,你试试。

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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