我们可以在C ++中的结构中包含成员函数吗? 我们在类中可以将函数放在结构中。 如果是,那么在C ++中保留结构和类的乐趣是什么?
答案 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绑定的脚本语言等。