Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2013-04-06 19:02:53

  dowoszek - Użytkownik

dowoszek
Użytkownik
Zarejestrowany: 2009-04-14

[C++] Do czego są potrzebne specjalizacje szablonów?

Załóżmy, że mamy szablon:

Kod:

template <typedef Typ> void funkcja(Typ t);

oraz jego specjalizację, np. dla double:

Kod:

template <> void funkcja<double>(double t);

Moje pytanie: po co w ogóle powstała idea specjalizacji szablonu? Przecież prościej jest dopisać zwykłą deklarację funkcji:

Kod:

void funkcja(double t);

I na to samo wychodzi. Czegoś nie dostrzegam w tej koncepcji?

A przy okazji może ktoś mógłby mi polecić dobre forum nt. C++ gdzie mógłbym zadawać tego typu pytania. Gdzie się bywa w tych tematach? :)

Ostatnio edytowany przez dowoszek (2013-04-06 19:06:03)

Offline

 

#2  2013-04-08 01:11:53

  Miziak - Użytkownik

Miziak
Użytkownik
Skąd: ok. Płocka
Zarejestrowany: 2010-11-03

Re: [C++] Do czego są potrzebne specjalizacje szablonów?

Powiedzmy tak załóżmy, że dana funkcja/metoda ma robić ta samo dla wielu typów w dodatku posłużę się głupim przykładem dodawania gdybyś czysto hipotetycznie chciał napisać funkcję dodającą dla każdego typu musiałbyś ją zdeklarować oddzielnie. Co zaśmieca tylko kod bo tak naprawdę te funkcje nie wnoszą nic nowego. Szablon daje Ci elastyczność jednorazowo zdeklarowana funkcja zadziała dla każdego typu oczywiście w granicach rozsądku :)


[url=http://img827.imageshack.us/i/linuxfr8.gif/][img]http://img827.imageshack.us/img827/778/linuxfr8.gif[/img][/url]

Offline

 

#3  2013-04-08 10:09:22

  dowoszek - Użytkownik

dowoszek
Użytkownik
Zarejestrowany: 2009-04-14

Re: [C++] Do czego są potrzebne specjalizacje szablonów?

Miziak, do czego służą szablony to ja wiem, ale nie takie było moje pytanie :) Temat już niekatualny, bo uzyskałem odpowiedź; dla zainteresowanych:
http://forum.4programmers.net/C_i_C++/141740-specjalizacja_szablonu_a_zwykla_definicja_funkcji

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.014 seconds, 15 queries executed ]

Informacje debugowania

Time (s) Query
0.00014 SET CHARSET latin2
0.00007 SET NAMES latin2
0.00149 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.15.193.45' WHERE u.id=1
0.00118 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.15.193.45', 1713548001)
0.00052 SELECT * FROM punbb_online WHERE logged<1713547701
0.00138 DELETE FROM punbb_online WHERE ident='18.217.228.35'
0.00096 DELETE FROM punbb_online WHERE ident='47.128.36.230'
0.00099 DELETE FROM punbb_online WHERE ident='47.128.59.246'
0.00075 DELETE FROM punbb_online WHERE ident='85.208.96.208'
0.00048 SELECT topic_id FROM punbb_posts WHERE id=229738
0.00128 SELECT id FROM punbb_posts WHERE topic_id=23302 ORDER BY posted
0.00068 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=23302 AND t.moved_to IS NULL
0.00014 SELECT search_for, replace_with FROM punbb_censoring
0.00087 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=23302 ORDER BY p.id LIMIT 0,25
0.00099 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=23302
Total query time: 0.01192 s