关于C ++类的一些问题

时间:2010-02-12 02:11:01

标签: c++

我有两个基本问题。第一个是关于其他类的功能。如果我有一个带有类的头文件,并且我想在我创建的另一个类中使用该函数,我是否总是必须构造一个类对象来运行该类中的函数,如:

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

有没有办法用对象构造调用函数?

第二个问题是可以在一个头文件中放入多个小类吗?

5 个答案:

答案 0 :(得分:3)

如果您的函数声明为static,那么您不需要对象实例来调用它。

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

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

要回答你的第二个问题,是的,有时候还可以。之前我已经完成了与彼此相关的小实用程序结构。通常我只是懒惰而且不想打扰制作单独的文件。

答案 1 :(得分:3)

如果函数作用于类的对象,则它们应该只是成员函数。不作用于对象的函数应该只是普通的全局函数(或类静态):

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

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

对于你的第二个问题,是的,没关系。一般来说,每个文件都会粘贴一个类,但在我看来,在一个文件中只有一些小类是没有错的。

答案 2 :(得分:0)

  

有没有办法只使用对象构造调用函数?

仅当函数声明为static时。 (好吧,这是谎言,如果你颠覆了类型系统,它的可能而不构建对象,但这不是一个好主意)

  

第二个问题是可以在一个头文件中放入多个小类吗?

当然,它一直在做。

答案 3 :(得分:0)

已经提到的1静态

2做自然感觉。保持相关课程。 JAva的一个问题是每个文件狂热地执行一个类

然而 - 不可饶恕的罪是在类b c和d的实现中传播类a的实现

即所有类实现都应该在一个.cpp文件中。

答案 4 :(得分:0)

  1. 将该函数声明为static。
  2. 你在谈论内部课程吗?如果是这样,那么它就完全合法了。