qq_26163659
qq_26163659
2015-02-28 15:28
采纳率: 36.4%
浏览 5.0k

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

主函数中用参数a接受这个返回值,那么对a的改变会引起私有成员变量的改变吗?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • oyljerry
    oyljerry 2015-03-01 09:28
    已采纳

    返回了引用就可以修改它指向的变量。这种方式通过函数来达到修改内部变量的方式。从而改变封装的行为。不过一般要清楚这么做的目的

    点赞 评论
  • devmiao
    devmiao 2015-02-28 15:59

    同一个对象当然会改变。通过共有方法将私有成员传出来是很常见的做法,比如设计模式中的单例模式。

    点赞 评论
  • KrisKing
    KrisKing 2015-03-02 02:13

    这个自己写代码试一下就知道了

    点赞 评论
  • dinkysummydinky
    dinkyFan 2015-03-02 08:14

    会改变,因为引用的意义在于不同变量名指向相同地址,一个变量改变其值,其他变量也会变。

    点赞 评论
  • u013025310
    Beyond我爱杨 2015-03-03 04:19

    引用争对的是同一块内存,a接受这个返回值意味着是对这个返回值的引用,改变a自然会改变这块内存中的值,
    另外,为了保证类的封装性,建议使用const引用,利用编译器对其改变行为作出限制。

    点赞 评论
  • hsqaihkl
    穆林枫 2015-03-03 07:44

    #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;

    }
    可否理解成这样的呢?

    点赞 评论
  • hsqaihkl
    穆林枫 2015-03-03 07:46

    如果可以的话 其实返回值就相当于另一个变量,也就是相当于一个temp

    int temp=B;
    retrun temp;
    而已

    点赞 评论
  • yahohi
    wangicter 2015-03-03 08:54

    作为引用的变量,相当于一个别名;原理上是指向同一块内存,因此对引用变量的修改就会导致原始变量跟着修改。

    点赞 评论

相关推荐