2010-11-02 22 views
0

在C++中是什麼意思template and inline are orthogonal在C++中,「模板和內聯是正交的」是什麼意思?

+2

你爲什麼不問問說話的人(sbi)? http://stackoverflow.com/questions/4077609/overloading-output-stream-operator-for-vectort/4077666#4077666 – 2010-11-02 12:49:05

+3

通常,「正交」用於非正式地表示「獨立,無關,無關」。最終從一個事實中推導出來,即一組正交向量通常被看作向量空間的基礎,並且是「線性獨立的」,而一個更準確的隱喻(因爲正交性是線性獨立的充分但不是必要的條件),是一口一口。 – 2010-11-02 12:51:45

+0

你甚至沒有準確地引用他。 「templatizing」!=模板,和「內聯」!=內聯。 – 2010-11-02 22:28:46

回答

4
  • 如果兩件事情是「正交的」,這意味着它們是獨立的。在這種情況下,這意味着模板可以是內聯的,模板可以是非內聯的,非模板可以是非內聯的,並且非模板可以是內聯的。

  • 我認爲這個問題的出現是因爲兩者之間存在一些表面相似性,因爲兩者應該出現在使用它們的翻譯單元中,換句話說,它們的定義(實體,實現方法)應該在.h文件。但是,從第一段可以看出,模板和內聯的確是正交的。 HTH

+0

另請注意,在代數正交意味着(非正式)垂直,線性獨立:) – 2010-11-02 12:57:58

+0

我會說,垂直是正交性的一種特殊情況(在特殊情況下)。 – 2010-11-02 13:32:10

+0

當然,這就是爲什麼我非正式提及** – 2010-11-02 13:37:30

0

鬆散地說,這意味着他們不會改變彼此的行爲。例如。內聯意味着同樣的事情,無論它是用於模板函數還是普通函數。

0

您正在查看的是(部分)關於計算機科學中「正交」的定義,你可以在答案here中找到。

1

這意味着某件事物可以是一個模板或不參考它是否是內聯的。它們是具有不同目的的不同概念。

然而,我認爲這個詞是誤導性的,因爲這兩個概念確實以非平凡的方式相互作用。例如,非內聯函數通常不能在.h文件中聲明,但如果它是一個函數模板,它通常可以。所以templateinline大多是但不是完全正交的。