在数学,如果z = x+y/2,然后z都是会改变的,每当我们更换的价值x和y。我们可以在编程中做到这一点,而不必z每次更改xand 的值时都进行专门更新y吗?
我的意思是这样的东西行不通,对吧?
int x;
int y;
int z{x + y};
cin >> x;
cin >> y;
cout << z;
Run Code Online (Sandbox Code Playgroud)
如果您对我为什么需要它感到困惑,我希望实时显示该变量,并在rhs变量进行更改时自动更新该变量。
就像杀死一只小怪并获得金币一样,净资产(现金+自己物品的价值)也会发生变化。或者,汽车的速度计会根据您行驶的速度或速度而变化。
有人说,在大多数情况下,编译器比人类更聪明,并且会优化很多我们无法明确执行的东西。我想知道编译器是否对此进行了优化。下面的代码有有趣的结果,但没有错误。但有一个严重的问题。
//will this move or copy construct?
#include <iostream>
class A
{
public:
A()
{
std::cout << "Constructed A.\n";
}
~A()
{
std::cout << "A destroyed.\n";
}
};
class B
{
private:
A m_A;
public:
B(A someA):m_A{someA}
{
}
};
int main()
{
B oneB{A()};
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码使用 Clang++ 13.0.1 在 Windows 10 上打印-fexceptions -O3 -Wall -g -std=c++20 -v -c
Constructed A.
A destroyed.
A destroyed.
Run Code Online (Sandbox Code Playgroud)
为什么A被销毁了两次但只被构造了一次?B即使使用常量引用构建时也会发生这种情况。这真是太荒谬了。我仍在学习 C++,从未参与过任何项目或其他任何事情。我想问一些我在网上学习时感到困惑的事情。