乐闻世界logo
搜索文章和话题

struct和class有什么区别?

4 个月前提问
4 个月前修改
浏览次数26

1个答案

1

在C++中,structclass都是用来定义用户自定义的数据类型,它们之间的主要区别在于默认的访问权限和默认的继承类型。

  1. 默认访问权限

    • struct:默认的成员访问权限是公开的(public)。这意味着结构体内部的变量和函数默认对外部是可见的。
    • class:默认的成员访问权限是私有的(private)。这意味着类内部的变量和函数默认对外部是不可见的,除非明确地将其声明为public。
  2. 默认继承类型

    • 当使用struct或class继承另一个struct或class时,struct默认使用的是公开继承(public inheritance),而class默认使用的是私有继承(private inheritance)。

例子

考虑以下两个定义,一个是struct,一个是class

cpp
struct MyStruct { int x; }; class MyClass { int x; };

在这两个例子中,MyStruct的成员x默认是公开的,这意味着在结构体外部可以直接访问:

cpp
MyStruct obj; obj.x = 10; // 允许

而对于MyClass,成员x默认是私有的,这意味着在类外部不能直接访问:

cpp
MyClass obj; obj.x = 10; // 编译错误,因为x是私有的

总结: 虽然structclass在技术上可以互换使用(特别是在C++中),但是按照惯例,struct通常用于较小的数据结构,它的主要目的是数据存储,而不太侧重于行为。class通常用于定义更复杂的对象,其中不仅包括数据,还包括行为(函数)。这种惯例有助于代码的可读性和维护性。

2024年8月9日 17:50 回复

你的答案