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

在学习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++##结构体#
全部评论

相关推荐

头像
04-17 09:29
已编辑
湖南农业大学 后端
睡姿决定发型丫:本硕末9也是0offer,简历挂了挺多,只有淘天 美团 中兴给了面试机会,淘天二面挂,美团一面kpi面,中兴一面感觉也大概率kpi(虽然国企,但一面0技术纯聊天有点离谱吧)
点赞 评论 收藏
分享
群星之怒:不是哥们,你就不好奇瘫痪三十年的老植物人是啥样的吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务