我们可以在C ++中的结构中包含成员函数吗?

时间:2014-01-13 14:52:55

标签: c++ class struct

我们可以在C ++中的结构中包含成员函数吗? 我们在类中可以将函数放在结构中。 如果是,那么在C ++中保留结构和类的乐趣是什么?

2 个答案:

答案 0 :(得分:2)

  

我们可以在C ++中的结构中包含成员函数吗?

是。类是一个类,无论它是使用class还是struct关键字声明的。唯一的区别是默认辅助功能:struct为public,class为private。

  

如果是,那么在C ++中保留结构和类的乐趣是什么?

历史奇特。添加class关键字以使C with Classes(最初调用C ++)感觉更加面向对象;但是没有人看到任何理由阻止传统struct类型的行为与新的class类型一样,所以我们最终得到两个或多或少相同的单词用于相同的事情。 / p>

答案 1 :(得分:0)

一个明显的答案是“struct”包含在标准中以向后兼容C。

为了允许在C接口下面的C语言接口中的前向声明的结构,它们允许struct也是一个具有所有功能的类。

换句话说,您可以发布可以从C代码调用的接口:

struct Foo;

#ifdef __cplusplus 
  extern "C" { // to use with C or C++
#endif

void myFunc1( struct Foo * );
int myFunc2( const struct Foo * );

#ifdef __cplusplus 
   }
#endif

然后在您的实现中(在C ++中)

 struct Foo
 {
    private:
       int myMember;
    public:
       void myFunc1();
       int myFunc2() const;
 };

 void myFunc1( Foo * foo ) { foo->myFunc1(); }
 int myFunc2( Foo const* foo ) { return foo->myFunc2(); }

您的类不仅可以从C库中使用,而且可以与您的二进制兼容的C ++库(但使用的是C),也可以使用与C绑定的脚本语言等。