c++-C++ 类内函数以引用作为返回值(例如返回类内私有成员变量)

问题描述

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

c++-C++ 类内函数以引用作为返回值(例如返回类内私有成员变量)的相关文章

对象的初始化-用函数的返回值初始化一个类对象,这其中用了几次复制构造函数

问题描述 用函数的返回值初始化一个类对象,这其中用了几次复制构造函数 这是我自己写的一段代码#includeusing namespace std;class Example{int num;public:Example(int i){num=i;cout<<""This is construction with parameter.n"";}Example(){num=0;cout<<""This is construc

cript-VBS脚本如何把数据库里面返回值赋给脚本里面的一个变量啊!

问题描述 VBS脚本如何把数据库里面返回值赋给脚本里面的一个变量啊! VBS脚本如何把数据库里面返回值赋给脚本里面的一个变量啊! 只返回某字段查找的某一个值,我试了好久就是不成功. 上网查的方法,不会用: setrs=connObj.execute(strSQLCode)ifnotrs.eofthenmsgboxrs(字段名)或用setrs=server.createobject(adodb.recordset)rs.openSQL,connObj,1,1ifnotrs.eofthenmsgbo

json-jax rs如何通过调用函数的返回值来返回相应的http状态?

问题描述 jax rs如何通过调用函数的返回值来返回相应的http状态? 需要实现这样的一个功能,在web api里拿到前台传来的json数据,调用DAO方法将该存入数据库中,在web api中根据DAO方法的返回的状态(例如存储成功或者失败)返回相应的http状态.应该是return Response.ok(xxx).build(); 是吗 那里面的xxx是DAO方法吧,那相应的DAO方法应该返回什么呢? 解决方案 顶啊............................ 解决方案二: 顶

c语言中返回值和返回指针的问题

int testA (void) { int b = 1 ; return b; } char * testB (void) { char str[] = "abc" ; return str; } int main() { printf( " the value of testA is %d \n", testA() ); printf( " the value of testB is %c ", *( testB() ) ) ; } 对于返回

j uery ajax 返回值-jQueryajax返回结果输出到页面

问题描述 jQueryajax返回结果输出到页面 $.ajax({ type:"get", url:"login", cache:false, dataType:text, data:{ userName:name, userPassword:pas, userCheck:certCode }, success:function(data){ alert("success"+data); } }); Struts中定义action(ajax能请求

swfupload 返回值-swfupload返回值不为对象

问题描述 swfupload返回值不为对象 我重java后台传递的为Map对象,在js页面就变成了{""path"":""test/img/login.jpg""}求swfupload怎么让他传递为对象而不是字符串呀{""path"":""http://localhost:8080/test/swf/14216677325335687.jpg""}

java返回值 重载-java当中一个匿名类或者类必须返回一个对象吗

问题描述 java当中一个匿名类或者类必须返回一个对象吗 java当中一个类必须返回一个对象吗 就象方法一样一定有个返回值,void修饰的除外 解决方案 只有方法才有返回值可言,类又不是方法,没有返回值可言.A a=new A();这叫创建一个对象并引用,而不是返回一个对象

(一二四)给类对象赋值、以及类对象的返回值

于直接给对象赋值: 之前学过,如何给对象在初始化时进行赋值. 对于C++11来说,初始化方式有三种: ① man c = man{ "cc",1 }; ② man d = { "dd",1 }; ③ man f{ "ff",1 };   假如有一类M,他有两个私有成员a和b(int类型). 于是新建一对象M q; 对象q使用默认构造函数(假如都赋值为0,这个不重要): 现在,我们想给对象q的第一个私有成员赋值,该怎么办? 这章刚学过运算符重载,难

《C++面向对象高效编程(第2版)》——3.15 函数返回值

3.15 函数返回值 C++面向对象高效编程(第2版)许多函数向主调函数返回值.引用或指针.要正确和高效地使用它们,必须先理解它们的含义.可能有以下几种模式返回: T X::f(); // 按值返回T T* X::f(); // 返回T类对象的指针/地址 const T* X::f(); // 返回指向const T类对象的指针 T& X::f(); // 返回对T对象的引用 const T& X::f(); // 返回对const T类对象的引用``` (1)绝不返回对局部变量的引用(或