Hmm ... to be honest, I don't really like the way these classes are designed regarding their copy. Is clone considered as the copy constructor to use, instead of the copy constructor ? So we should copy every member, except if you're assuming we are not going to call clone in middle of a rendering ...

Shouldn't we use something like 
clone() {
QgsSimpleFillSymbolLayerV2 *sl = new QgsSimpleFillSymbolLayerV2( *this );
// "special" members 
sl->allocated_member = allocated_member->clone();
return sl;
}
And decide what to do with copy constructors and assignment operators ? either make them private or implement them correctly. Because, at the moment, there are classes that allocates things in their constructor, you can copy them, and then you have a double free on destruction.