小编Mic*_*ake的帖子

如何使变量始终等于某些计算的结果?

在数学,如果z = x+y/2,然后z都是会改变的,每当我们更换的价值xy。我们可以在编程中做到这一点,而不必z每次更改xand 的值时都进行专门更新y吗?

我的意思是这样的东西行不通,对吧?

int x;
int y;
int z{x + y};
cin >> x;
cin >> y;
cout << z;
Run Code Online (Sandbox Code Playgroud)

如果您对我为什么需要它感到困惑,我希望实时显示该变量,并在rhs变量进行更改时自动更新该变量。

就像杀死一只小怪并获得金币一样,净资产(现金+自己物品的价值)也会发生变化。或者,汽车的速度计会根据您行驶的速度或速度而变化。

c++ c++11

58
推荐指数
8
解决办法
5397
查看次数

编译器是否优化了所有临时对象?

有人说,在大多数情况下,编译器比人类更聪明,并且会优化很多我们无法明确执行的东西。我想知道编译器是否对此进行了优化。下面的代码有有趣的结果,但没有错误。但有一个严重的问题。

//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++,从未参与过任何项目或其他任何事情。我想问一些我在网上学习时感到困惑的事情。

c++ compiler-optimization

1
推荐指数
2
解决办法
380
查看次数

标签 统计

c++ ×2

c++11 ×1

compiler-optimization ×1