struct和class保留字的区别

本文探讨了C++中struct与class的区别,包括成员访问级别及默认继承保护级别的不同。通过实例说明了struct默认成员为public,而class默认成员为private;struct默认public继承,而class默认private继承。

在C++ 中,有的时候我们会见到用struct保留字来修饰一个类,这和用class来修饰一个类有什么区别呢?

看下面的代码:

struct  A

{

     int  a;

     string str_a;

}

class  B

{

    int b;

    string str_b;

}

区别1:默认成员的访问级别不同,如果用struct保留字来定义一个类,那么struct中的成员默认是 public型的,比如上面定义的struct  A,所以它的成员 a 和 str_a 是可以被外部成员访问的。如果是用class来定义一个类,那么class中的成员默认是private型的,比如上面定义的class B,所以在B中的成员 b和 str_b是不能外部成员访问的,也就说B类中的成员是私有的。

区别2:默认继承保护级别不同,使用class定义的派生类默认具有Private继承,而使用struct 定义的派生类默认具有public继承。

如下代码:

class  CBase

{

public:

    void display()

    {

        cout<<" CBase"<<endl;

    }

}

 

struct  CBase_struct : CBase

{

}

class CBase_class : CBase

{

}

void main()

{

    CBase_struct  CBS;

    CBase_class   CBC;

    CBS.display();  // 正确,因为缺省时它是以public方式继承基类,所以display仍是该类的Public成员。

    CBC.display();  //错误,因为缺省以Private方式继承基类,所以display方法在该类中将作为Private成员函数。因此该类的对系那个不能访问。

}

以上简单说明了struct和class在C 中的主要区别,当然,在C语言struct很少见到它的成员是函数,我们在C语言中已习惯了struct作为数据集来使用,而在c 中,用struct来定义一个类也是很少见的。另外在编译机制上struct 和class也存在很大差别,比如struct是没有构造函数、析构函数、赋值构造函数的机制。在这里就不详细解说了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值