网站首页 > 基础教程 正文
在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++交互开发系列之复杂类型传递与解析
- 01-07Python从入门到放弃-详解列表、元组和字典
- 01-07python 中字典如何进行复制
- 01-07python入门023:字典嵌套
- 01-07掌握Python字典的12个例子
- 01-07使用Python 获取多级字典(Json)格式所有Key、Value
- 01-07简单学Python——字典的操作1(增加、更改和删除字典元素)
- 01-07Python之容器拾遗:Python就是包裹在一堆语法糖中的字典
- 01-07深入了解python字典的有序特性
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)