相关疑难解决方法(0)

C++破坏表达式中的临时对象

给出以下代码:

#include <iostream>

struct implicit_t
{
    implicit_t(int x) :
        x_m(x)
    {
        std::cout << "ctor" << std::endl;
    }

    ~implicit_t()
    {
        std::cout << "dtor" << std::endl;
    }

    int x_m;
};

std::ostream& operator<<(std::ostream& s, const implicit_t& x)
{
    return s << x.x_m;
}

const implicit_t& f(const implicit_t& x)
{
    return x;
}

int main()
{
    std::cout << f(42) << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

ctor
42
dtor
Run Code Online (Sandbox Code Playgroud)

虽然我知道这是正确的,但我不确定为什么.有没有stdc ++知识的人可以向我解释一下?

c++ constructor destructor temporary-objects

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

标签 统计

c++ ×1

constructor ×1

destructor ×1

temporary-objects ×1