Rob*_*y18 2 c++ class vector member instance
我有以下代码(我将跳过包含和你有什么):
main.cpp中
std::vector <actor> actors;
int main() {
actor (2, 3);
}
Run Code Online (Sandbox Code Playgroud)
actor.h
class actor
{
public:
int x, y;
actor(int, int);
};
Run Code Online (Sandbox Code Playgroud)
actor.cpp
extern std::vector <actor> actors;
actor::actor(int x, int y)
{
actor::x = x;
actor::y = y;
actors.push_back(*this);
}
Run Code Online (Sandbox Code Playgroud)
请问行:
actor (2, 3)
Run Code Online (Sandbox Code Playgroud)
实际上创建一个演员的实例,除了被推到演员矢量的那个?
注意:如果代码没有编译,请忽略任何错误.实际的代码会编译,但实际上粘贴在这里太复杂了.
请问行:
Run Code Online (Sandbox Code Playgroud)actor (2, 3)实际上创建一个演员的实例,除了被推到演员矢量的那个?
是.actor(2, 3)将创建一个类型的临时对象actor,除非它是未评估的表达式的一部分1.在这个临时的构造函数中,一个副本(of *this)将被压入堆栈(但请注意,在未评估的表达式中,构造函数当然不会被调用).
在包含的表达式的末尾actor(2, 3),临时将被销毁.矢量副本将保持不变.
1个一种不计算表达式是一个内部的表达sizeof(…),typeid(…),decltype(…)或noexcept(…)表达.