我刚刚开始学习 C++,需要帮助理解这些类和函数之间发生了什么。如果 A 类有一个 B 类,如果我通过 A 类为 B 类使用 setter,则不会发生任何变化。
如果我直接使用 classB setter,它工作得很好。我还发现,如果使用指针,我可以使这些函数正常工作,但我正在寻求理解为什么这不起作用。
#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 修改为 30,但事实并非如此,int a 仍为 10。
最佳答案
ClassB getTest(){return test;}
这将返回测试
的拷贝。您修改拷贝,而不是成员 test
本身。因此稍后您会发现 test
没有任何变化。
要允许用户修改,需要通过引用返回:
ClassB& getTest(){return test;}
关于c++ - 需要帮助理解 C++ 中的组合和类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54730027/