c++用引用传递对象

2024-11-23 04:18:52
推荐回答(4个)
回答1:

用引用传递对象的时候 依然能改变他的值

你的p++实际上调用的是P对象的 operator++(int) 函数

但是你的类中没有定义这个方法,所以你这个程序根本编译不过。

#include

using namespace std;

class human

{

public:

human() :t(10)

{

cout << "构造" << endl;

}

human &operator++(int)

{

human temp(*this);

t++;

return temp;

}

void print()

{

cout << t << endl;

}

private:

int t;

};

human &can(human &p);

int main()

{

human a;

a.print();

can(a);

a.print();

return 0;

}

human & can(human &p)

{

p++;//将他自加为什么不行

return p;

}

回答2:

这是个错觉,我们来对比一下简单类型和对象
简单类型 int 属性只有一个:intValue
复杂类型例如 class Dog,属性有很多,比如name,sex,品种,身高体重等等
引用传递对象,仍然可以修改对象的属性,不过对象的引用已经绑定,不能把该引用指向另一条狗。
简单类型也是如此,如int的引用,可以修改它的值,但是也不能绑定为另一个整型变量。
从这点来说,它们是一致的。

回答3:

引用传递,传的是地址;直接传,跟值传递一样,是形参而已!

回答4:

p++;//将他自加为什么不行 —— 因为human类没有重载后++运算符。