次のコードを確認してください。
class A { public: virtual void Foo() = 0; int Bar; };
class B : public A { public: B( float X ); void Foo(); private: float X; };
class C : public A { public: C( float Y ); void Foo(); private: float Y; };
さて、いくつかの関数で私がこれをしたとしましょう:
A*& pToA = pToDerived; // allocated as A* pToDerived = new B( ... );
pToA = pToC; // allocated as A* pToC = new C( ... );
これは有効ですか?pToA
もしそうなら、それはのポインタへの参照であるにもかかわらず、メモリリークを引き起こしpToDerived
ますか?
SSCS
Node
たとえば、それから派生した2つ以上のタイプがあると仮定します。これは、現在実装しているリンクリストのスニペットです。一般的なものではないため、正しく機能するにはポリモーフィズムが必要になる可能性があります。newnode
挿入関数に渡される引数です。
Node* iNode;
for( iNode = mStart; iNode != mEnd; iNode = iNode->Next )
{
if ( iNode->Key == k ) // Replace current node with newnode
{
newnode->Next = iNode->Next;
newnode->Prev = iNode->Prev;
*iNode = *newnode;
delete newnode;
return; // We're done, so we quit.
}
}
// Node doesn't alreay exist, so we add it.
Node*& uglyhack = mEnd;
iNode->Next = newnode;
newnode->Prev = iNode;
uglyhack = newnode;