IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> [ C++ ] — 结构体 -> 正文阅读

[C++知识库][ C++ ] — 结构体

一、C++中的结构体

1、声明

声明的过程不分配内存

struct Box{
	char name[10];
	double length;
	double width;
	double height;
};

声明的同时实例化,实例化要分配内存

struct Box{
	char name[10];
	double length;
	double width;
	double height;
} book;

2、初始化

初始化方式:

  • 初始化列表
  • 构造函数

(1) 初始化列表

struct Box{
	int length,width,height;
};
Box box={1.1 , 2.2 , 3.3};

若其中一个成员未初始化,则其后面的所有成员都不能初始化

Box box={1.1,2.2};  //合法
Box box={1.1, ,3.3};  //非法

(2) 构造函数

结构体中可以自定义构造函数析构函数

struct Box{
   char name[10];
   double length;
   double width;
   double height;
   Box(double L=0.1, double W=0.3){  //默认参数
   length=L;
   width=W;
}
}
int main()
{
    Box box(5.5);
    strcpy(box.name, "BOX1");
    cout << "name: " << box.name << endl;
    cout << "length: "<<box.length << endl;
    cout << "width: " << box.width << endl;
    return 0;
}

输出:

name: BOX1
length: 5.5
width: 0.3

3、成员函数

C++允许在结构中声明和定义成员函数,并且可用范围解析操作符定义函数。

struct Box {
    char name[20];
    double length;
    double width;
    double height;
    Box(double L = 0.1, double W = 0.3) {
        length = L;
        width = W;
    }
    void structFunc(void);
};
void Box::structFunc(void) {
    cout << "happy" << endl;
}
int main()
{
    Box box(1.0,2.0);
    box.structFunc();
    return 0;
}

输出:happy

4、结构体嵌套

struct Box {
    double height;
};

struct Item {
    int i;
    Box box;
};
int main()
{
    Item item;
    item.box.height = 0.1;
    return 0;
}

其中,height不是item的成员,box才是

item.height=1.0; //不合法
item.Box.height=1.0; //不合法

5、结构体作为函数参数

结构体可以传递给函数,一般情况下,通过值传递,这意味着要生成整个原始结构的副本,再传递给函数,但这会浪费时间来复制整个结构,所以一般通过引用来传递。结构体的成员一般是public的,所以函数可以访问和改变原始结构体的成员。如果不想让函数改变它们的值,则可以使用常量引用来传递。

struct Box {
    char name[20];
    double length;
    double width;
    double height;
    Box(double L = 0.1, double W = 0.3) {
        length = L;
        width = W;
    }
};

void func(const Box& box) {
    cout << box.length << endl;
}

int main()
{
    Box box(1.0,2.0);
    func(box);
    return 0;
}

输出:1

6、结构体作为函数返回值

struct Box {
    char name[20];
    double length;
    double width;
    double height;
    Box(double L = 0.1, double W = 0.3) {
        length = L;
        width = W;
    }
};


Box func() {
    Box box(1.0, 2.0);
    box.height = 3.0;
    return box;
}

int main()
{
    Box box1;
    box1 = func();
    cout << box1.height;
    return 0;
}

输出:3

二、结构体与类的相同之处

C++为C语言中的结构体引入了成员函数访问控制权限继承多态面向对象特性

  • 可设置成员的访问属性:punlic, protected, private
  • 可包含成员函数构造函数析构函数(C语言中结构体里不允许定义函数成员),而且结构体也可使用范围解析操作符(一般来说很少在结构体中定义成员函数)
  • 继承、多态等

三、结构体与类的不同

结构体是一种特殊形态的类

  • 结构体成员默认是public,而类成员默认是private
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 15:45:21  更:2021-12-14 15:46:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:39:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码