问题描述
- C++ 类内函数以引用作为返回值(例如返回类内私有成员变量)
-
主函数中用参数a接受这个返回值,那么对a的改变会引起私有成员变量的改变吗?
解决方案
返回了引用就可以修改它指向的变量。这种方式通过函数来达到修改内部变量的方式。从而改变封装的行为。不过一般要清楚这么做的目的
解决方案二:
作为引用的变量,相当于一个别名;原理上是指向同一块内存,因此对引用变量的修改就会导致原始变量跟着修改。
解决方案三:
同一个对象当然会改变。通过共有方法将私有成员传出来是很常见的做法,比如设计模式中的单例模式。
解决方案四:
这个自己写代码试一下就知道了
解决方案五:
将私有成员传出来,自己写就出了
解决方案六:
会改变,因为引用的意义在于不同变量名指向相同地址,一个变量改变其值,其他变量也会变。
解决方案七:
引用争对的是同一块内存,a接受这个返回值意味着是对这个返回值的引用,改变a自然会改变这块内存中的值,
另外,为了保证类的封装性,建议使用const引用,利用编译器对其改变行为作出限制。
解决方案八:
将私有成员传出来,自己写就出了
解决方案九:
将私有成员传出来,自己写就出了
解决方案十:
#include
#include
#include
using namespace std;
class A
{
public:
int get();
A(int);
protected:
private:
int B;
};
A::A(int c)
{
B=c;
}
int A::get()
{
return B;
}
void main() {
A a(10);
cout<<a.get()<<endl;
}
可否理解成这样的呢?
时间: 2024-11-08 18:58:24