gpt4 book ai didi

c++ - 是否可以在全局范围内构造一个临时变量?

转载 作者:太空宇宙 更新时间:2023-11-04 15:50:52 25 4
gpt4 key购买 nike

对于任意类,

template<class T>
struct S
{
S()
{
cout << "hello moto\n";
}
};

可以构造一个在创建后立即销毁的临时对象,但只能在函数内部,例如

void f()
{
S<int>();
}

移动S<int>();在全局范围之外要么不在 GCC 中编译,要么在 VC++ 中编译为函数声明。

甚至可以创建全局临时对象吗?


编辑

虽然demo代码是模板类的形式,但确实是针对我的问题;一个普通的 C 结构就可以了。但是对于一个类,很容易看出这个 temp 是否真的被创建,以确保这个子句不会被编译器解释为函数声明。

最佳答案

仅仅创造?当然:

//         vvvvvvvv creates temporary
S<int> x = S<int>();

或者为了节省全局空间:

char x = (S<int>(), 0); // uses comma operator

但是这个(ab)使用了初始化。您的程序从 main 开始,您不应该在此之前运行任意语句。您应该接受它,而不是尝试解决它。​​

关于c++ - 是否可以在全局范围内构造一个临时变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8628488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com