Sınıf bildirimi içindeki bir şablon sınıfının üye işlevleri tanımlanması arasında bir fark var mıdır?Sınıfın içinde ve dışında tanımlanmış bir şablon sınıfı için üye işlevleri arasındaki fark
içinde tanımlanan:
template <typename T>
class A
{
public:
void method()
{
//...
}
};
dışında tanımlanan:
şablon olmayan sınıfları içintemplate <typename T>
class B
{
public:
void method();
};
template <typename T>
void B<T>::method()
{
//...
}
bu inlined olmayan satır içi yöntemler arasındaki farktır. Bu şablon sınıfları için de geçerli mi?
Meslektaşlarımın çoğu için varsayılan, sınıf içinde tanımları sağlamaktır, ancak her zaman sınıfın dışındaki tanımları tercih ettim. Tercihim haklı mı?
Düzenleme: Lütfen yukarıdaki kodun sınıf için başlık dosyasında sağlandığını varsayalım.
Ben sınıf bildirimi içinde bir yöntem gövdesine tanımlayan yöntem satır içi yapar gösterir yerde bir başvuru görmedim. Bir şey mi kaçırdım? – Dathan
@Dathan: Bak: http://www.parashift.com/c++-faq-lite/inline-functions.html#faq-9.8 Ve burada: http: //msdn.microsoft.com/en-us /library/bw1hbe6y%28VS.80%29.aspx – Ben
@Dathan: hangi, "bir üye işlevi sınıf tanımında (8.4) tanımlanabilir: Sen diyor C++ standardının §9.3/2 kaçırdığınızı Bu bir satır içi üye işlevidir ... "Düzenleme: Ayrıca bu bir sınıf tanımı olduğunu unutmayın - bir sınıf beyanı gibi bir şeydir: sınıf x; –