オブジェクトのスライスは、派生クラスのオブジェクトをその基本クラスのオブジェクトに割り当てまたはコピーし、プロセスの派生部分を失うと発生します。 ここでは、What is the slicing problem in C++?について詳しく説明しました。 (私自身、私は問題、言語の値のセマンティクスのではなく自然な結果としてそれを見ることはありませんが、それはこの質問のポイントではありません。)
私はthisを使用していくつかの困難を持って、それは私の派生クラスをスライスするようです。この例は私の問題を説明するのに役立ちます。 class A
{
A() {
OtherClass(*this);
}
virtual doSomething() = 0;
}
class B : public A
{
B() : A() {}
tryブロック内のnew式は、コンピュータにbad_alloc例外がスローされます。 catch節は、参照ではなく値によって例外オブジェクトを受け取ります。どのように"bad allocation"をe.what()が印刷しますか?私はスライスされると思った。 #include <iostream>
int main()
{
try
{
int* p = ne
C++とC#の違いを理解するのに問題があります。 まず、基本クラスに仮想関数が含まれている例があります。 class Base
{
protected:
int super;
public:
virtual int f() = 0;
};
class Derived : public Base
{
public:
int extraA;
in