如何使C++变量永久成为另外两个变量的和并随其动态变化?
实现动态跟随两变量和的C++方案
普通的int变量做不到自动更新,因为mySum = myInt + myInt2只是把当前时刻的和值拷贝到mySum的内存里,后续原始变量变化不会同步到mySum。下面是几种可行的实现方式:
1. 使用Lambda表达式(轻量快捷)
用Lambda捕获两个变量的引用,每次需要求和时调用这个Lambda,相当于动态计算当前的和:
#include <iostream> int main() { int myInt = 3; int myInt2 = 5; auto getSum = [&]() { return myInt + myInt2; }; // 捕获外部变量的引用 std::cout << getSum() << std::endl; // 输出8 myInt = 10; std::cout << getSum() << std::endl; // 输出15 myInt2 = 30; std::cout << getSum(); // 输出40 }
2. 自定义封装类(模拟"动态变量")
创建一个类保存两个变量的引用,通过重载类型转换运算符,让这个类的对象可以像普通int变量一样使用,每次访问时自动计算当前的和:
#include <iostream> class DynamicSum { private: const int& num1; const int& num2; public: // 构造函数绑定两个变量的引用 DynamicSum(const int& a, const int& b) : num1(a), num2(b) {} // 重载int类型转换,访问时自动计算和 operator int() const { return num1 + num2; } }; int main() { int myInt = 3; int myInt2 = 5; DynamicSum mySum(myInt, myInt2); std::cout << mySum << std::endl; // 输出8 myInt = 10; std::cout << mySum << std::endl; // 输出15 myInt2 = 30; std::cout << mySum; // 输出40 }
3. 直接编写求和函数(最基础)
如果不需要"变量"的形式,直接写一个返回两数和的函数,每次输出时调用即可:
#include <iostream> int getSum(const int& a, const int& b) { return a + b; } int main() { int myInt = 3; int myInt2 = 5; std::cout << getSum(myInt, myInt2) << std::endl; // 输出8 myInt = 10; std::cout << getSum(myInt, myInt2) << std::endl; // 输出15 myInt2 = 30; std::cout << getSum(myInt, myInt2); // 输出40 }
内容的提问来源于stack exchange,提问作者linger1109
相关产品推荐
相关产品推荐

