网站首页 > 基础教程 正文
在C语言中的结构体struct只能定义成员变量,不能定义成员函数。例如,定义学生结构体。
#include <stdio.h>
struct student
{
char name[30]; // 姓名
unsigned short age; // 年龄
char sex; // 性别,m表示男,f表示女
unsigned long num; // 学号
};
int main()
{
// 初始化结构体变量stu
struct student stu = {"张三", 20u, 'm', 20240001ul};
printf("该学生的基本信息:%s, %u, %c, %lu\n", stu.name, stu.age, stu.sex, stu.num);
return 0;
}
上述代码中,student结构体成员变量无法赋值默认值,除非,定义具体结构体变量时,直接对该变量初始化。在C++中,struct除了用于封装多个不同类型的数据成员,还可以包含成员函数,这些函数可以操作结构体的成员变量。
#include <iostream>
struct Rectangle
{
// 默认构造函数,初始化结构体成员变量
Rectangle()
{
width = 0;
height = 0;
}
// 除了上述方式,还可以按照本方法初始化结构体成员变量
// Rectangle():width(0),height(0)
// {
// }
// 构造函数,初始化结构体成员变量
Rectangle(int w, int h)
{
width = w;
height = h;
}
// 析构函数
~Rectangle()
{
std::cout << "调用析构函数~Rectangle()" << std::endl;
}
// 成员函数,计算矩形的面积
int area() const
{
return width * height;
}
int width;
int height;
};
int main()
{
// c++中定义结构体变量不需要加struct 关键字
Rectangle rect(5, 10);
// rect.width = 5;
// rect.height = 10;
// 调用成员函数计算面积
int area = rect.area();
std::cout << "长方形面积: " << area << std::endl;
return 0;
}
注意,在C++中,struct和class在语法上是相似的,只是默认的访问权限不同。struct的成员默认是public的,而class的成员默认是private的。但是,你可以在struct或class内部显式地指定成员的访问权限。
既然struct类似于class,那么struct能否实现继承呢?struct与class之间能相互继承呢?欢迎各位大佬踊跃发言!
---E N D---
喜欢的记得关注哦!
您的支持是我们前进的动力!
猜你喜欢
- 2024-12-30 C++ 在编程语言谱系中的位置及其特点
- 2024-12-30 C++基础知识总结(超详细总结) c++ 基础
- 2024-12-30 [面试]C++中struct和class的区别是什么
- 2024-12-30 C++类和C语言的结构体有什么区别?linux C++第18讲
- 2024-12-30 C与C++利用pragma pack对结构体做成员打包对齐设置
- 2024-12-30 结构体所占内存大小 结构体所占内存大小是所有成员所占的内存字节数计算
- 2024-12-30 结构体的各种使用方法详细讲解-c\c++
- 2024-12-30 C++,结构体和类,结构体和类的区别,struct与class的区别
- 2024-12-30 C++编程:复合数据类型—结构体 c语言结构体复数运算
- 2024-12-30 C#与C++交互开发系列之复杂类型传递与解析
- 05-24php实现三方支付的方法有哪些?
- 05-24CosmicSting 漏洞影响 75% 的 Adobe Commerce 和 Magento 网站
- 05-24Java接口默认方法的奇妙用途
- 05-24抽象类和接口
- 05-24详解Java抽象类和接口
- 05-24拒绝接口裸奔!开放API接口签名验证
- 05-24每天学Java!Java中的接口有什么作用
- 05-24Java:在Java中使用私有接口方法
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)