c++中struct和class的区别小结

c++中struct和class的区别小结

前言

在C++中,class和struct都是用于定义自定义数据类型的关键字,但它们之间有一些区别。这些区别主要涉及成员的默认访问权限和继承。

正题

成员的默认访问权限:

  • 在class中,默认情况下,成员的访问权限是private,这意味着除了类的内部,其他地方无法直接访问类的私有成员。
  • 在struct中,默认情况下,成员的访问权限是public,这意味着类的外部也可以直接访问结构体的成员。

继承:

  • 当使用class定义类时,默认的继承访问权限是private,这意味着基类的成员对派生类是private的,除非通过继承控制符进行了显式修改。
  • 当使用struct定义类时,默认的继承访问权限是public,这意味着基类的成员对派生类是public的,除非通过继承控制符进行了显式修改。

以下是一个示例,演示了class和struct之间的区别:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#include <iostream>

classClassExample {

intprivateMember;

public:

intpublicMember;

ClassExample() : privateMember(0), publicMember(0) {}

voidShowPrivate() {

std::cout <<"Private: "<< privateMember << std::endl;

}

};

structStructExample {

intprivateMember;

public:

intpublicMember;

StructExample() : privateMember(0), publicMember(0) {}

voidShowPrivate() {

std::cout <<"Private: "<< privateMember << std::endl;

}

};

intmain() {

ClassExample classObj;

StructExample structObj;

classObj.publicMember = 42;

structObj.publicMember = 42;

classObj.privateMember;// 无法访问,因为 privateMember 是 private 的

structObj.privateMember;// 可以访问,因为 privateMember 是 public 的

return0;

}

总之,class和struct的主要区别在于默认的成员访问权限和继承访问权限。然而,这两者在其他方面都可以用来定义类,包括成员变量、成员函数、构造函数等。选择使用哪个关键字取决于你希望如何组织和访问类的成员。