2010-02-12 98 views
1

我有兩個基本問題。第一個是關於其他類的功能。如果我有一個在它的類的頭文件,我想用在我創建了另一類功能,做我總是要構造一個類的對象來運行該類像函數:關於C++類的幾個問題

someclass class; <----object construction 
class.somefunction(); 

有沒有辦法只是用對象構造調用函數?

第二個問題是可以將多個小類放在一個頭文件中嗎?

+0

我認爲你的意思是_without_對象構造? – 2010-02-12 02:13:20

回答

3

函數只應用於成員函數,如果它們作用於類的對象。沒有對象上採取行動的功能應該只是簡單的全局函數(或類靜態):

// Global function 
void foo() { /* do something */ } 

// Static function 
class Foo 
{ 
public: 
    static void foo() { /* do something */ } 
}; 

對於你的第二個問題,是它的確定。通常人們對每個文件都堅持一個類,但在我看來,在單個文件中有幾個小類沒什麼問題。

+0

您(或您正在學習的人)可能來自Java背景,所有功能都必須進入課程。在C++中不存在這樣的限制,所以如果這樣做更有意義,您應該完全自由地編寫類之外的函數。 – MatrixFrog 2010-02-12 02:42:01

+0

我認爲你的意思是對問題發表評論。 – 2010-02-12 03:00:33

3

如果你的函數被聲明爲static那麼你不需要一個對象實例來調用它。

class Foo 
{ 
    public: 
     static void Bar() {} 
}; 

// ...later 
Foo::Bar(); 

要回答你的第二個問題,是的,有時候可以。我之前用小型實用程序結構來做到這一點,這些實用程序結構彼此相關。通常我只是懶惰,不想打擾製作單獨的文件。

0

有沒有一種方法只是用對象構造調用函數?

只有在函數聲明爲靜態時纔有效。 (好吧,這是一個謊言,其可能沒有,如果你顛覆式系統constucting一個對象,但它不是一個好主意)

而第二個問題是,好把多種小班一個頭文件?

當然,這是所有的時間。

0

1靜態如已經提到的

2做什麼感覺自然。保持相關的課程。一個與Java的問題是它的每個文件一類狂熱執法

但是 - 不可饒恕的罪過正在蔓延整個類BC和d的實現類的實現

即所有類實現的應該是在一個.cpp文件中。

0
  1. delcare功能爲靜態。
  2. 你在談論內部類嗎?如果是這樣的話,那麼它完全合法。