在一次采访中我被问到以下问题
给定以下代码片段,其中省略号 (...) 表示尚未向您公开的代码:
class X { … }; class Y { public: explicit Y(const X& x); … };
对于以下每个语句的编译和执行,你能说些什么?描述执行此代码时发生的每个操作。
Y func(Y y) { … }
X x;
Y y = func(Y(x));
我无法正确理解问题,因此无法回答。如果有人可以向我解释我期望的答案或分享我可以通过的任何链接,那就太好了。非常感谢。
最佳答案
也许...
表示可能有一些代码,影响代码的编译和执行?
代码中发生了什么:
X
默认构造函数被调用,func(Y(x))
被调用:Y(x)
构造函数被显式调用以从x
创建 Y 对象。
代码的编译取决于(除其他事项外)X
和 Y
构造函数,例如:
- 将私有(private)默认构造函数添加到
X
以防止代码被编译, - 将私有(private)复制构造函数添加到
Y
可防止代码被编译。
关于c++ - 代码不泄露时编译执行;在代码中使用省略号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30117589/