c++ - 代码不泄露时编译执行;在代码中使用省略号

标签 c++

在一次采访中我被问到以下问题

给定以下代码片段,其中省略号 (...) 表示尚未向您公开的代码:

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 对象。

代码的编译取决于(除其他事项外)XY 构造函数,例如:

  • 将私有(private)默认构造函数添加到 X 以防止代码被编译,
  • 将私有(private)复制构造函数添加到 Y 可防止代码被编译。

关于c++ - 代码不泄露时编译执行;在代码中使用省略号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30117589/

相关文章:

c++ - OpenGL翻译glm右侧还是左侧?

c++ - 存储字符数组

c++ - 奇怪的移动分配运算符(operator)签名

c++ - 程序纹理棋盘 OpenGL

c++ - HSV 到 RGB 的转换公式是如何工作的?

C++ 链表段错误

c++ - 会不会是 sizeof(T*) != sizeof(const T*)?

c++ - 模板结构和模板成员函数之间的名称冲突

c++ - 纹理splat opengl的最有效方法?

c++ - QDialog去掉标题栏