C/C++中Struct与Class的区别

C与C++中struct的区别

  • C++中的struct是对C中的struct进行了扩充,具有了class许多特性。
  • 简单来说C中struct只是一堆描述主体属性的数据的组合,而C++中struct添加了对这些属性的封装和行为操作。

在C中使用结构体时需要加上struct,或者对结构体使用typedef取别名,而C++可直接使用,例如:

//结构体声明,C和C++使用同一个
struct Person
{
    int  iAge;
    QString strName;
    QString strSex;
};

typedef struct Person Person1;//C中取别名

struct  Person  stu1;	//C中正常使用
Person1   stu2;		//C中通过取别名的使用
Person    stu3;		//C++使用

对于CPP开发者来说,一般开发环境对哪种都支持,看个人习惯,C++中用法更简洁。

C++中struct和class的区别

  • 内部成员变量及成员函数的默认防控属性。struct默认防控属性是public的,而class默认的防控属性是private的,可以通过子类对象访问变量去进行测试。例如:
struct A
{
    int a;//默认防控属性是public
};
class B
{
    int a;//默认防控属性是private
};
  • 继承关系中默认防控属性的区别。在继承关系,struct默认是public的,而class是private,可以通过子类对象访问变量去进行测试。例如:
struct A
{
public:
    int   a;
};
struct B : A//默认继承权限public
{
public:
    int   b;
};

class A
{
public:
    int   a;
};
class B : A//默认继承权限private
{
public:
    int   b;
};
  • 模板中的使用。class这个关键字还可用于定义模板参数,就像typename。但是strcut不用与定义模板参数,例如:
template< typename T, typename Y >	//可以把typename 换成 class,不能替换为 struct
int  Func( const T& t, const Y& y )
{
    //......
}
  • {}赋初值的区别。因为C++是对C的扩充,那么它就兼容过去C中struct的特性,例如:
struct stu
{
    char 	cSex;
    int		iAge;
    double	dScore;
};
stu stu1 = {'m', 20, 500}; //定义时赋初值,在struct时没问题,在class时出错
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星火撩猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值