c++ - 需要帮助理解 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。
解决方案
ClassB getTest(){return test;}
这将返回. test
您修改副本,而不是成员test
本身。所以后来你观察到没有变化test
。
要允许用户修改它,您需要通过引用返回:
ClassB& getTest(){return test;}
推荐阅读
- ios - 单个 OSStatus iOS Swift 的多个错误案例
- sql-server - SSRS - 如何引用特定字段的值以便能够在另一个字段中使用它?
- python - 将字符串的第一个字符添加到其他每个字符
- apache - URL要我下载文件
- sql - 使用 NOT IN 子句替代 Hive 查询
- fluentd - 多个过滤器和格式问题
- javascript - Vue for循环数据格式变化
- javascript - 最大距离的光线投射
- python - 熊猫数据框早期数据类型
- android - Android Studio,如何为 API-26 创建自定义自适应 mipmap ic_launcher 图标