C++类名+&+函数名是什么意思?

类名+&+函数名是什么意思?
还是不太懂
Clock& operator ++(); //前置单目运算符重载
就是这么条语句
后面还有
Clock operator ++(int); //后置单目运算符重载
这个为什么没“&”

这是c++相对于c新引入的一个概念——引用
引用的性质基本和指针一样。
在平时写函数的时候,假如你在调用的时候传了一个参数v而没用“引用”或者“指针”,那么你写的函数里的v和主程序里的v是毫不相干的。就是函数里面把v的值变了,在函数体结束了以后,主程序里的v依然保持函数调用前的值。
但是有的时候你需要让两个v都改变。比如说你想写一个swap(a,b)函数(交换a,b的值)。这个时候你用普通的传参数的方法是不行的。要么你用指针
void
swap(int
*pointa,int
*pointb)
要么你在函数定义的时候就申明,传的参数是一个引用
void
swap(int
&a,int
&b)【注:这两个语句都是函数申明】
就我现在的编程体会来看,引用和指针基本没有功能上的区别,唯一的区别就是在函数体里面使用的时候指针有指针的一套赋值、取类成员的方法,而引用的使用方法基本和一般变量一样
有问题请留言或追问
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-10-16
重载运算符时用不用"&"都无所谓,可以试试下面这个程序
#include<iostream>
using namespace std;

class Clock
{
public:
Clock(int NewH=0,int NewM=0,int NewS=0);
void ShowTime();
Clock operator ++();
Clock operator ++(int);
private:
int Hour,Minute,Second;
};

Clock::Clock(int NewH,int NewM,int NewS)
{
if(0<=NewH && NewH<24 && 0<=NewM && NewM<60 && 0<=NewS && NewS<60)
{
Hour=NewH;
Minute=NewM;
Second=NewS;
}
else
cout<<"time error!"<<endl;
}

void Clock::ShowTime(){cout<<Hour<<":"<<Minute<<":"<<Second<<endl;}

Clock Clock::operator ++ () //前置重载定义
{
Second ++;
if (Second>=60)
{
Second=Second-60;
Minute++;
if (Minute>=60)
{
Minute=Minute-60;
Hour++;
Hour=Hour%24;
}
}
return *this;
}

Clock Clock::operator ++(int)//后置重载定义
{
Clock old=*this;
++(*this);
return old;
}

int main()
{
Clock myClock(23,59,59);
cout<<"First time output:";
myClock.ShowTime();
cout<<"Show myClock++:";
(myClock++).ShowTime();
cout<<"Show ++myClock:";
(++myClock).ShowTime();
return 0;
}
看一看重载++ 的部分!希望对你有帮助~!天天开心本回答被提问者采纳
第2个回答  2008-12-28
在类外对这个函数进行实例化

也就是在类外把这个函数的内容写出来

几个(类名+&)才知道这个函数是属于这个类的
第3个回答  2019-03-20
重载运算符时用不用"&"都无所谓,可以试试下面这个程序
#include<iostream>
using
namespace
std;
class
Clock
{
public:
Clock(int
NewH=0,int
NewM=0,int
NewS=0);
void
ShowTime();
Clock
operator
++();
Clock
operator
++(int);
private:
int
Hour,Minute,Second;
};
Clock::Clock(int
NewH,int
NewM,int
NewS)
{
if(0<=NewH
&&
NewH<24
&&
0<=NewM
&&
NewM<60
&&
0<=NewS
&&
NewS<60)
{
Hour=NewH;
Minute=NewM;
Second=NewS;
}
else
cout<<"time
error!"<<endl;
}
void
Clock::ShowTime(){cout<<Hour<<":"<<Minute<<":"<<Second<<endl;}
Clock
Clock::operator
++
()
//前置重载定义
{
Second
++;
if
(Second>=60)
{
Second=Second-60;
Minute++;
if
(Minute>=60)
{
Minute=Minute-60;
Hour++;
Hour=Hour%24;
}
}
return
*this;
}
Clock
Clock::operator
++(int)//后置重载定义
{
Clock
old=*this;
++(*this);
return
old;
}
int
main()
{
Clock
myClock(23,59,59);
cout<<"First
time
output:";
myClock.ShowTime();
cout<<"Show
myClock++:";
(myClock++).ShowTime();
cout<<"Show
++myClock:";
(++myClock).ShowTime();
return
0;
}
看一看重载++
的部分!希望对你有帮助~!天天开心
相似回答