2010-02-12 102 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. 你在谈论内部类吗?如果是这样的话,那么它完全合法。