📅  最后修改于: 2023-12-03 14:39:42.015000             🧑  作者: Mango
C语言和C++语言都支持结构体,但是两者之间还是有一些差别的。本文将从以下几个方面来介绍C结构和C++结构的区别。
在C语言中,定义一个结构体的方式如下:
struct student {
char name[20];
int age;
float score;
};
而在C++中,定义一个结构体的方式如下:
struct student {
char name[20];
int age;
float score;
};
可以看到,C++中定义结构体时可以省略struct
关键字,而在C语言中则必须加上struct
关键字。
在C语言中,结构体的所有成员都是默认为公共的(public),也就是说可以被外部访问到。而在C++中,结构体默认所有成员为私有(private),需要通过public
或protected
关键字来显式声明为公共或保护的。
C语言中的结构体并不支持构造函数和析构函数,因此无法对成员进行初始化和清理工作。而在C++中,结构体也是一个类,支持构造函数和析构函数,可以在构造函数中对成员进行初始化,在析构函数中进行清理。
下面是一个简单的例子,展示了C++中结构体的构造函数和析构函数:
#include <iostream>
struct student {
char name[20];
int age;
float score;
// 构造函数
student() {
name[0] = '\0';
age = 0;
score = 0.0f;
std::cout << "构造函数被调用" << std::endl;
}
// 析构函数
~student() {
std::cout << "析构函数被调用" << std::endl;
}
};
int main() {
student s;
return 0;
}
运行结果为:
构造函数被调用
析构函数被调用
C++中结构体可以定义成员函数,而C语言中的结构体没有这个功能。对于成员函数,C++中的结构体和类是没有什么区别的。
C++中结构体可以使用继承来获得其它类的成员,而C语言中的结构体不支持继承。
下面是一个简单的例子,展示了C++中结构体的继承:
struct person {
char name[20];
int age;
};
struct student : public person {
float score;
};
在上述代码中,student
继承了person
的成员,因此student
可以使用name
和age
成员。
综上所述,C语言和C++语言的结构体在语法和功能上有一些区别。如果你需要使用到结构体的高级特性,那么C++中的结构体可能更加适合你的需求。