|
Тема |
Re: айде един линк и от мене [re: Paдo] |
|
Автор |
Nero () |
|
Публикувано | 11.09.04 16:49 |
|
|
Не сравнявам С++ със С, всъщност докато го писах това си мислех за pass-by-value семантиката на С++ и това доколко можеш да избягваш копиранията на обекти без да използваш указатели. Не много.
Впрочем setjmp/longjmp е доста лек, но ужасен механизъм. Не става за С++, защото никакви деструктори не се викат при излизане от scope. В С++ за Symbian и други embedded платформи не се препоръчват exceptions заради производителността, и има разни заместители. Не съм задълбавал и не знам точно как работят, мисля че спестяват от това че информацията за грешката е просто int, а не клас. Тези механизми обаче не са в езика, а се дефинират с макроси и не са красиви.
Ако трябва да умножиш три матрици а*в*с, не можеш да дефинираш абстрактна операция * без да повтаряш циклите. Всъщност май може - с някакви магии с темплейти.
С темплейти можеш да правиш доста оптимизирани библиотеки, само дето от получения код боли глава. Например постига се static polymorphism:
template <class impl>
class base : public impl {
public: void op() { impl::op(); }};
struct impl { void op() { /* work here */ }};
base<impl>().op();
|
| |
|
|
|