1、c和c++中struct的主要区别
c中的struct不可以含有成员函数,而c++中的struct可以。
C语言
c中struct 是一种用于组合多个不同数据类型的数据成员的方式。struct 声明中的成员默认是公共的,并且不支持成员函数、访问控制和继承等概念。C中的struct通常被用于将多个相关数据组合在一起,但没有类的其他功能。
c
struct Point {
int x;
int y;
};
int main() {
struct Point p1;
p1.x = 5;
p1.y = 3;
return 0;
}
C++
struct 是一种用于定义复合数据类型的方式,与C相似。然而,C++中的struct不仅可以包含数据成员,还可以包含成员函数、访问控制和继承等概念,与类(class)的功能非常接近。换句话说,C++中的struct和class的区别主要是默认的访问控制和继承方式不同。
cpp
struct Point {
int x;
int y;
void printCoordinates() {
std::cout << "x: " << x << ", y: " << y << std::endl;
}
};
int main() {
Point p1;
p1.x = 5;
p1.y = 3;
p1.printCoordinates();
return 0;
}
c中的struct不可以含有成员函数,而c++中的struct可以。
2、c++中的struct与class的主要区别
c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private
cpp
// 使用 struct 定义
struct MyStruct {
int x; // 默认 public
void foo() { /* ... */ } // 默认 public
private:
int y; // 可以显式声明为 private
};
// 使用 class 定义
class MyClass {
int x; // 默认 private
void foo() { /* ... */ } // 默认 private
public:
int y; // 可以显式声明为 public
};
int main() {
MyStruct structObj;
structObj.x = 10; // 可以直接访问
structObj.foo(); // 可以直接访问
MyClass classObj;
// classObj.x = 10; // 错误,无法直接访问私有成员
// classObj.foo(); // 错误,无法直接访问私有成员
return 0;
}