19.class 和 struct 的异同-灵析社区

菜鸟码转

C++ 中为了兼容 C 语言而保留了 C 语言的 struct 关键字,并且加以扩充。在 C 语言中,struct 只能包含成员变量,不能包含成员函数。而在 C++ 中,struct 类似于 class,既可以包含成员变量,又可以包含成员函数。

C++ 中的 struct 和 class 基本是通用的,唯有几个细节不同:

  • class 中类中的成员默认都是 private 属性的;而在 struct 中结构体中的成员默认都是 public 属性的。
  • class 继承默认是 private 继承,而 struct 继承默认是 public 继承。
  • class 可以用于定义模板参数,struct 不能用于定义模板参数。

C++

struct A{};
class B : A{}; // private 继承 
struct C : B{}; // public 继承

举例:

C++

#include<iostream>

using namespace std;

class A{
public:
    void funA(){
        cout << "class A" << endl;
    }
};

struct B: A{ // 由于 B 是 struct,A 的默认继承级别为 public
public:
    void funB(){
        cout << "class B" << endl;
    }
};

class C: B{ // 由于 C 是 class,B 的默认继承级别为 private,所以无法访问基类 B 中的 printB 函数

};

int main(){
    A ex1;
    ex1.funA(); // class A

    B ex2;
    ex2.funA(); // class A
    ex2.funB(); // class B

    C ex3;

ex3.funB(); // error: 'B' is not an accessible base of 'C'. 
return 0; }


阅读量:2020

点赞量:0

收藏量:0