21xrx.com
2024-11-05 21:33:55 Tuesday
登录
文章检索 我的文章 写文章
C++中结构体与类的异同
2023-07-14 15:19:04 深夜i     --     --
结构体 异同 成员访问控制 继承

C++中结构体和类都是用来封装数据和方法的工具,用来描述一个对象的属性和行为。尽管在许多方面它们是相似的,但它们仍然有一些重要的区别。

一、语法形式

结构体的语法形式比类简单。结构体声明不需要关键字 class 修饰,而类必须使用关键字 class 来声明。

struct Person{

  char name[20];

  int age;

};

class Person{

public:

  char name[20];

  int age;

};

二、默认访问控制

类的成员函数和变量默认是私有的,而结构体的成员函数和变量默认是公有的。不过,在 C++11 及以后的版本中,可以使用关键字 class 和 struct 来显式地指定访问控制。

struct Person{

  char name[20];

  int age;

private:

  void function(){}

};

class Person{

public:

  char name[20];

  int age;

private:

  void function(){}

};

三、默认的成员变量初始化

对于类,如果定义构造函数,那么类的成员变量必须在构造函数中显式初始化。而对于结构体,可以在定义变量的同时初始化。

struct Person{

  char name[20] = "unknown";

  int age = 0;

};

class Person{

public:

  char name[20];

  int age;

  Person(char* n, int a):name(n), age(a){} //构造函数

};

四、继承和多态

结构体不支持继承和多态,而类可以。这意味着结构体无法通过继承来扩展其功能,也无法将对象转换为基类类型。

总而言之,结构体和类都有其独特的应用场景。结构体适用于数据简单,没有行为的描述,例如简单的 Point 类型。而类适用于更复杂的对象,例如具有行为的 Person 类型。C++中的结构体与类的异同可以使程序员在选择合适的工具时更加得心应手。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复