C++中class和struct的区别

在 C++ 中class 和 struct 只有两点主要区别:
1. 默认继承权限。默认情况下,class的继承是以private来继承而struct则是按照public进行继承。
2. 成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。

而其它的特性,struct和class基本上,甚至严格来说是一样的。

//一个不常见的示例,将 struct 直接改为class也能编译通过。
//编译环境为 GCC 4.4.1
#include <iostream>
#include <string>

using namespace std;
 
struct bar
{
    private:// 访问权限修饰符
        int y;

    public:
        bar(){};//无参构造函数

        bar(int a){ y = a;}//带参数的构造函数

        ~bar();//虚构函数

        void say();

        virtual void func1() = 0;//纯虚函数
};

struct  foo: protected bar// 继承
{
    private:
          int x;

    public:
         foo(){};

         void say(string msg) {cout<<msg<<endl;}

         virtual int func2();//虚函数
};

 
int main()
{

    return 0;
}

可以看到:
1. 都可以有成员函数:struct可以包含和class中一样的构造函数,析构函数,重载的运算符,友元类,友元结构,友元函数,虚函数,纯虚函数,静态函数;
2. 尽管默认访问权限不同,但都可以拥有public/private/protected修饰符;
3. 都可以进行复杂的继承和多重继承,一个struct可以继承自一个或多个class,反之亦可。
注意这里与C语言并不相同,C 语言中的 struct 从本质上来说只是一个包装数据的语法机制。

在一般情况下,仍必须使用struct结构的主要原因是:
1. 开发维护遗留系统。
2. 需要与传统的API进行通讯。
3. 当然,有时使用struct可以让代码看起来更简洁


原文:http://www.dewen.org/q/5950

有错的地方还请大家指出,共同探讨,共同学习!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值