首页 > 解决方案 > 需要帮助理解 C++ 中的组合和类函数

问题描述

我刚刚开始学习 c++,需要帮助理解这些类和函数之间发生了什么。如果classA有一个classB,如果我通过class A为class B使用setter,它没有改变。

如果我直接使用 classB 设置器,它工作正常。我还发现,如果我使用指针,我可以使函数工作,但我正在寻找理解为什么这不起作用。

#include <iostream>

ClassA
{
private:
    ClassB test;
public:
    ClassB getTest(){return test;}
};

ClassB
{
private:
    int a = 10;
public:
    int getA(){return a;}
    void setA(int b){a += b;}
};

int main()
{
    ClassA myClass;
    myClass.getTest().setA(20);
    std::cout << myClass.getTest().getA(); // Will return 10 still
}

我的想法是这会将 int a in test 修改为 30,但它不会,并且 int a 仍然是 10。

标签: c++

解决方案


ClassB getTest(){return test;}

这将返回. test您修改副本,而不是成员test本身。所以后来你观察到没有变化test

要允许用户修改它,您需要通过引用返回:

ClassB& getTest(){return test;}

推荐阅读