可能重复:
What are the differences between struct and class in C++
我正在查看某个结构的头文件,但看起来函数是这个结构的一部分......那么这是一个类,但是如何弃绝?还是用?
struct Recording
{
FLAG mode;
unsigned short intervals;
unsigned short saved_cycles;
virtual void SavetoFile( FILE *file,
bool Control,
PhaseData *__phaseData = NULL
);
virtual bool LoadfromFile( FILE *file,
bool Control,
PhaseData *__phaseData = NULL
);
};
答案 0 :(得分:3)
在C ++中,class
和struct
是相同的,除了前者的默认访问说明符是private
,而后者的默认访问说明符是public
。
class Base { /* .. */ };
class Foo : Base
{
int i;
};
struct Bar : Base
{
int i;
};
在上面的代码中,Foo
从Base
私下继承,而Bar
则公开。同样,Foo::i
是私有的,而Bar::i
是公开的。请注意,i
在两种情况下的可见性与继承无关,即使Foo
和Bar
未从Base
继承,它也是相同的。< / p>
除了这些差异之外,你可以用一个做一切,你也可以做另一个。
答案 1 :(得分:0)
在C ++中,class
和struct
之间唯一有意义的区别是class
的变量和函数默认是私有的,而struct
的变量和函数是私有的默认情况下公开。
答案 2 :(得分:0)
默认情况下,所有子对象(成员和基础)在使用class
关键字时都是私有的,默认情况下为public struct
,并且都定义了类类型。
答案 3 :(得分:0)
功能结构是:
默认情况下,所有成员都是公开的。 默认情况下,继承是公共的,即如果结构继承自类或结构,则它是公共的。
对于上述两个类,默认情况下都是私有的,即如果你没有指定其他类。
关于数据成员,这使它与C兼容(结构只能有数据成员),这意味着你也可以在C ++中使用C结构。
在某些情况下,即使在C ++中,结构仍然被使用,但我自己的偏好通常是使用“类”这个词,除非我特别希望我的所有数据成员都公开,这种情况偶尔发生在您只是将它们分组的情况下在一起。
发布的代码可能会受益于私有数据成员,以及const-correctness,并可能使虚拟方法变得抽象。还需要一个虚拟析构函数,因为它有虚拟方法。
此外,除非您正在实施“系统”,否则不应使用以两个下划线开头的标识符。