现在的位置: 首页 > 综合 > 正文

c++中class与struct的区别

2013年11月04日 ⁄ 综合 ⁄ 共 1004字 ⁄ 字号 评论关闭

C++中:

1.class中成员的默认访问权限是private,struct中的成员的默认访问权限是public。

2. class的默认继承方式是private, struct 的默认继承方式是public。

#include <iostream>

using namespace std;

struct A {
    int a;
};

struct B : A { //等价于 struct B : public A {
    int b;
};

struct C : private A {
    int c;
};




class base {
    int a;
public:
    int b;
};

class derived : base { //等价于 class devrived : private base {
    int d;
};

class derived_public : public base {
    int d;
};

int main()
{
    A a;
    B b;
    C c;

    a.a = 10;  //struct 中的成员的访问权限默认是共有的 member access level is public

    b.a = 10;  //struct 的默认继承方式是共有(public)继承;
    b.b = 10;  //struct 中的成员的访问权限默认是共有的 member access level is public

    //c.a = 10;  //error: 'int A::a' is inaccessible
    c.c = 10;    //struct 中的成员的访问权限默认是共有的 member access level is public


    base bb;
    derived d;
    derived_public dd;

    //bb.a = 10; //error: 'int base::a' is private  //class 中成员默认的访问权限是private
    bb.b = 10;

    //d.a = 10; //error: 'int base::a' is private
    //d.b = 10; //error: 'int base::b' is inaccessible //class 的默认继承方式是私有继承private
    //d.d = 10;  //error: 'int derived::d' is private //class 中成员默认的访问权限是private

    //dd.a = 10; //error: 'int base::a' is private
    dd.b = 10;
    //dd.d = 10;//error: 'int derived_public::d' is private //class 中成员默认的访问权限是private



    return 0;
}

抱歉!评论已关闭.