Amortised growth dynamic arrays outperform linked lists for most typical use. This is due to cache coherency.
This depends on the case you're testing for performance, whether it's access or management.
In most cases, where add/insert/delete are being called many times, it's not a correct statement, as every such call causes whole array to be reallocated. Random access on the other hand is much faster on an array than linked list, providing that the index is known, and iterator isn't being used to find the item.
It may not necessarily be noticed, as static_cast will call constructor on CSprTex, so the instance will appear correct, therefore, if all objects in linked list are invalid, then they are all gonna be created anew when statically cast.
This is incorrect. Using static_cast<> with a pointer type will not call any constructors for the pointed at type.