相关疑难解决方法(0)

C++:临时论证的生命周期?

当创建a的新实例MyClass作为函数的参数时,如下所示:

class MyClass
{
  MyClass(int a);
};    

myFunction(MyClass(42));
Run Code Online (Sandbox Code Playgroud)

该标准是否使得任何被授权者都能获得析构函数的时间安排?
具体来说,我可以假设在调用之后的下一个语句之前调用它myFunction()吗?

c++ destructor

65
推荐指数
3
解决办法
1万
查看次数

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++ ×2

destructor ×2

constructor ×1

temporary-objects ×1