大话C++:第4篇 C++增强型struct

在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++中,structclass在语法上是相似的,只是默认的访问权限不同。struct的成员默认是public的,而class的成员默认是private的。但是,你可以在structclass内部显式地指定成员的访问权限。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值