结构体和类:自定义数据类型的创建

在学习C++中,结构体和类允许我们自定义数据类型,将数据和相关的操作封装在一起。本文将探讨结构体和类的概念,以及如何使用它们创建自定义数据类型,实现更模块化和可维护的代码。

结构体(Structures):数据的组织者

1.结构体的定义与声明 结构体是一种用户自定义的数据类型,用于将不同类型的数据组织在一起。它通过struct关键字进行定义。

#include <iostream>
struct Point {
    int x;
    int y;
};
int main() {
    // 声明结构体变量
    Point p1;
    // 访问结构体成员
    p1.x = 10;
    p1.y = 5;
    // 输出结构体成员值
    std::cout << "Point coordinates: (" << p1.x << ", " << p1.y << ")" << std::endl;
    return 0;
}

在这个例子中,我们定义了一个Point结构体,它包含两个整型成员x和y,代表点的坐标。在main函数中,我们声明了一个Point类型的变量p1,通过.运算符访问并修改了结构体的成员。

2.结构体的初始化 结构体可以通过多种方式进行初始化:

// 初始化方式一:使用初始化列表
Point p1 = {3, 7};

// 初始化方式二:逐个初始化成员
Point p2;
p2.x = 1;
p2.y = 4;
  

3.结构体作为函数参数 结构体可以作为函数的参数传递,使函数能够操作结构体数据。

void printPoint(Point p) {
    std::cout << "Point coordinates: (" << p.x << ", " << p.y << ")" << std::endl;
}
int main() {
    Point p1 = {8, 2};
    // 将结构体作为参数传递给函数
    printPoint(p1);
    return 0;
}

类(Classes):面向对象的封装

1.类的定义与声明 类是一种更高级别的封装,它不仅包含数据成员,还包含操作这些数据的成员函数。使用class关键字定义类。

#include <iostream>
class Circle {
public:
    // 数据成员
    double radius;
    // 成员函数
    double getArea() {
        return 3.14 * radius * radius;
    }
};
int main() {
    // 声明类对象
    Circle myCircle;
    // 初始化数据成员
    myCircle.radius = 5.0;
    // 调用成员函数
    double area = myCircle.getArea();
    // 输出计算结果
    std::cout << "Area of the circle: " << area << std::endl;
    return 0;
}

在这个例子中,我们定义了一个Circle类,它有一个数据成员radius和一个成员函数getArea(),用于计算圆的面积。在main函数中,我们声明了一个Circle类型的对象myCircle,通过.运算符访问并初始化了类的数据成员,并调用了类的成员函数。

2.类的构造函数和析构函数 构造函数用于在对象创建时进行初始化操作,析构函数用于在对象销毁时进行清理工作。它们分别由特殊的成员函数constructor和destructor表示。

class Car {
public:
    // 构造函数
    Car() {
        std::cout << "Car object is created." << std::endl;
    }
    // 析构函数
    ~Car() {
        std::cout << "Car object is destroyed." << std::endl;
    }
};
int main() {
    // 创建Car对象,调用构造函数
    Car myCar;
    // 对象离开作用域,调用析构函数
    return 0;
}

3.类的封装性 类具有封装性,即将数据和操作数据的函数封装在一起。通过将数据成员声明为private,可以实现数据的封装,只允许通过公有成员函数访问和修改数据。

class BankAccount {
private:
    double balance;
public:
    // 公有成员函数
    void deposit(double amount) {
        balance += amount;
    }
    double getBalance() {
        return balance;
    }
};

结构体和类的比较

1.相同点 a.都可以包含数据成员和成员函数。 b.都允许通过成员访问运算符.来访问和修改成员。

2.不同点 a.结构体的成员默认为public,而类的成员默认为private。 b.类具有封装性,能够更好地保护数据。 c.类支持继承、多态等面向对象的特性,而结构体不支持。

注意事项

PS:注意正确使用构造函数和析构函数,进行必要的初始化和清理工作。

#C++##结构体#
全部评论

相关推荐

狠赚笔第一人:学计算机自己不努力怪大环境?我大一就拿到了美团大厂的offer,好好看看自己有没有努力查看图片
点赞 评论 收藏
分享
头像
10-22 19:18
上海大学 后端
jopajhhdjwnqk:水印都叠杀人书了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务