我有兩個基本問題。第一個是關於其他類的功能。如果我有一個在它的類的頭文件,我想用在我創建了另一類功能,做我總是要構造一個類的對象來運行該類像函數:關於C++類的幾個問題
someclass class; <----object construction
class.somefunction();
有沒有辦法只是用對象構造調用函數?
第二個問題是可以將多個小類放在一個頭文件中嗎?
我有兩個基本問題。第一個是關於其他類的功能。如果我有一個在它的類的頭文件,我想用在我創建了另一類功能,做我總是要構造一個類的對象來運行該類像函數:關於C++類的幾個問題
someclass class; <----object construction
class.somefunction();
有沒有辦法只是用對象構造調用函數?
第二個問題是可以將多個小類放在一個頭文件中嗎?
函數只應用於成員函數,如果它們作用於類的對象。沒有對象上採取行動的功能應該只是簡單的全局函數(或類靜態):
// Global function
void foo() { /* do something */ }
// Static function
class Foo
{
public:
static void foo() { /* do something */ }
};
對於你的第二個問題,是它的確定。通常人們對每個文件都堅持一個類,但在我看來,在單個文件中有幾個小類沒什麼問題。
您(或您正在學習的人)可能來自Java背景,所有功能都必須進入課程。在C++中不存在這樣的限制,所以如果這樣做更有意義,您應該完全自由地編寫類之外的函數。 – MatrixFrog 2010-02-12 02:42:01
我認爲你的意思是對問題發表評論。 – 2010-02-12 03:00:33
如果你的函數被聲明爲static
那麼你不需要一個對象實例來調用它。
class Foo
{
public:
static void Bar() {}
};
// ...later
Foo::Bar();
要回答你的第二個問題,是的,有時候可以。我之前用小型實用程序結構來做到這一點,這些實用程序結構彼此相關。通常我只是懶惰,不想打擾製作單獨的文件。
有沒有一種方法只是用對象構造調用函數?
只有在函數聲明爲靜態時纔有效。 (好吧,這是一個謊言,其可能沒有,如果你顛覆式系統constucting一個對象,但它不是一個好主意)
而第二個問題是,好把多種小班一個頭文件?
當然,這是所有的時間。
1靜態如已經提到的
2做什麼感覺自然。保持相關的課程。一個與Java的問題是它的每個文件一類狂熱執法
但是 - 不可饒恕的罪過正在蔓延整個類BC和d的實現類的實現
即所有類實現的應該是在一個.cpp文件中。
我認爲你的意思是_without_對象構造? – 2010-02-12 02:13:20