Cpoint &pt和Cpoint * pt有什么区别呢?后面的是指针,但是前面的Cpoint &pt呢?

发布于2022-01-13 02:56:53

# include using namespace std;class Cpoint{ private : int x, y; public: Cpoint(int ax, int bx); ~Cpoint(); void print(void); friend Cpoint inflate(Cpoint &pt, int offset);};Cpoint ::Cpoint(int ax, int bx){ x = ax; y = bx;}Cpoint ::~Cpoint(){ cout << "释放所占的内存" << endl;}void Cpoint ::print(void){ cout << "point" << '(' << x << ',' << y << ')' <}Cpoint inflate(Cpoint &pt, int offset){ Cpoint temp = pt; temp.x += offset; temp.y += offset; return temp;}int main(void){ Cpoint point1(2, 3); point1.print(); point1 = inflate(point1, 3); point1.print(); return 0;};

2个回答
admin
网友回答2022-01-13
Cpoint &pt 是Cpoint的引用类型
admin
网友回答2022-01-13
cpoint &pt : 这里的pt是实参的别名,pt的任何改变都会在调用函数中反映出来,使用引用操作符,可以有效的提高运行速度,且可节省内存空间,这是c++中新添的功能,缺点也是被调函数的对pt的操作会影响原变量的值,所以当不需要被调函数的附加效应时,不要使用引用操作符。 cpoint pt : 这个pt是被调函数的临时变量,其值是实参的拷贝,pt的改变不会影响实参的内容,缺点和优点与cpoint &pt;正好对调。

回到
顶部