struct和class的区别在C++中的区别比较小,两者都可以用来定义类,进行方法和运算符重载,
他们的区别在于默认的访问级别,struct在没有声明访问修饰符的时候默认是public,而class为private
代码:
struct S{
S() : m_a(0){}
int m_a;
};
class C{
C() : m_a(0){}
int m_a;
};
S s;
printf("s.m_a = %d", s.m_a);
C c;//error!printf("c.m_a = %d", c.m_a);//error!
以上代码class C是不能被实例化的,因为构造函数为private
需要说明的是,struct是能够被继承的,只是默认继承的修饰符不一样,struct为public继承,而class为private继承
struct S{
S() : m_a(0){}
int m_a;
};
struct D : S{};
class C : S{};
int temp;
D d;
C c;
temp = d.m_a;
temp = c.m_a;//error