Portál AbcLinuxu, 26. dubna 2024 23:15


Dotaz: [C++] typename vs. class

3.2.2014 12:09 krrromanach
[C++] typename vs. class
Přečteno: 339×
Odpovědět | Admin
cafte aky rozdiel v templatoch medzi class a typename?

V tomto priklade vyzera ze to robi to iste:
#include <iostream>

template <class T> T foo(T x) { return x; }
template <typename T> T bar(T x) { return x; }

void main()
{
	cout << foo("foo") << endl;
	cout << bar("bar") << endl;
	system("pause");
}

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Luboš Doležel (Doli))
Beda0 avatar 3.2.2014 13:29 Beda0 | skóre: 29
Rozbalit Rozbalit vše Re: [C++] typename vs. class
Odpovědět | | Sbalit | Link | Blokovat | Admin
Není v tom žádný rozdíl - pouze individuální preference ohledně čitelnosti a přehlednosti kódu. Jde o historický relikt, kdy původně nechtěli zavádět nové klíčové slovo.
3.2.2014 21:21 andrej
Rozbalit Rozbalit vše Re: [C++] typename vs. class
Odpovědět | | Sbalit | Link | Blokovat | Admin
Správne sa má používať typename. Class totiž vyzerá akoby T mohla byť iba trieda, ale môže to byť aj základný typ.
4.2.2014 00:40 Sten
Rozbalit Rozbalit vše Re: [C++] typename vs. class
Správně podle koho? ISO C++ žádnou preferenci jednoho před druhým nevyjádřilo a Stroustrup na svých webových stránkách používá oboje.

Scott Myers (autor Effective C++) doporučuje používat class tam, kde očekáváte třídu, protože např. voláte nějaké metody (design by contract; tam základní typ být nemůže), a typename tam, kde používáte jen hodnoty. V některých případech, kde to nemůže být základní typ, dokonce ani nejde použít typename, třeba u template <template <typename> class Type>.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.