问题标签 [object-slicing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
18 回答
222233 浏览

c++ - 什么是对象切片?

有人在 IRC 中将其称为切片问题。

0 投票
1 回答
2606 浏览

java - Java / C# 中的 C++ 切片

C++ 切片是否也适用于其他语言,例如 Java/C#?

0 投票
8 回答
40837 浏览

c++ - 指针参数和引用参数的区别?

这些是否相同:

忽略空指针电位。这两个函数在功能上是否相同,无论someInt()是 virtual 还是传递了bar的子类或子类bar

这切任何东西:

0 投票
4 回答
4376 浏览

c++ - 异常切片 - 这是由于生成的复制构造函数吗?

我刚刚在我们的代码中修复了一个由异常切片引起的非常微妙的错误,现在我想确保我完全理解正在发生的事情。

这是我们的基本异常类、派生类和相关函数:

错误当然是外部调用最终抛出异常,而不是派生。我的错误是由于调用堆栈中较高的尝试捕获 Derived 失败造成的。

现在,我只是想确保我理解 - 我相信在“throw e”行,正在使用默认的复制构造函数创建一个新的异常对象。真的是这样吗?

如果是这样,我是否可以为将被抛出的对象锁定复制构造函数?我真的希望这种情况不再发生,并且我们的代码没有理由复制 Exception 对象(我知道)。

请不要评论我们有自己的异常层次结构这一事实。这是我正在努力纠正的一些旧设计(我正在取得良好进展。我已经摆脱了本土字符串类和许多本土容器。)

更新:需要明确的是,在我提出问题之前,我已经修复了这个错误(通过将“throw e”更改为“throw”)。我只是想确认发生了什么。

0 投票
2 回答
849 浏览

c++ - 是否可以使用智能指针进行切片?

如果我正确理解切片,我认为指针或智能指针不会发生这种情况。例如,如果您有:

我的理解是分配给“b”指向的对象的内存块仍然是相同的,并且在分配给智能指针“a”时不会改变。

请确认或拒绝我的理解,或让我知道与此相关的任何陷阱。

0 投票
5 回答
2286 浏览

c++ - 避免对异常类型进行切片 (C++)

我正在为我的库设计 C++ 中的异常层次结构。“层次结构”是从 std::runtime_error 派生的 4 个类。我想避免异常类的切片问题,因此使复制构造函数受到保护。但显然 gcc 在抛出它们的实例时需要调用复制构造函数,因此抱怨受保护的复制构造函数。Visual C++ 8.0 可以很好地编译相同的代码。是否有任何可移植的方法来化解异常类的切片问题?标准是否说明了实现是否可以/应该需要要抛出的类的复制构造函数?

0 投票
3 回答
1925 浏览

c++ - C++ 多态性和切片

下面的代码,打印出来

但是我需要将每个派生对象放入 User::items 中,调用它自己的打印函数,而不是基类。我可以在不使用指针的情况下实现这一点吗?如果不可能的话,我应该如何编写一个一个删除User::items并释放内存的函数,这样就不应该有任何内存泄漏?

0 投票
3 回答
3851 浏览

c++ - 引用和对象切片

我没有带我的 Effective C++,这让我非常烦恼,以至于我不得不要求自己保持理智。给定

如果我传入 a Foo,我是在纠结切片问题还是避免了它?

0 投票
3 回答
960 浏览

c++ - std::move 会导致切片吗?

例如,在

将 deriv 切成类型unique_ptr<Base>

0 投票
3 回答
247 浏览

c++ - 错误对象切片的原因是什么?