C++的结构体(struct)和类(class)对比

C++中的结构体(struct)和类(class)都是用户自定义数据类型,结构体默认公开(public),常用于简单数据结构,而类默认私有(private),支持继承和多态,适合面向对象编程。两者可通过访问修饰符控制成员的可见性和访问性。
摘要由CSDN通过智能技术生成

C++的结构体(struct)和类(class)对比

在C++中,结构体(struct)和类(class)都是用户自定义的数据类型,用于封装数据和方法。结构体通常用于定义一些简单的数据结构,而类则更多的用于面向对象的编程。

两者的不同之处如下:

结构体(struct)是一种简单的数据集合,它可以包含不同类型的成员变量,但默认情况下成员变量是公共的(public)。结构体通常被用来表示一组相关的数据,例如描述一个学生的姓名、年龄和成绩等信息。

示例代码:

#include <iostream> 
#include <cstring>
using namespace std;

struct Person {
//public:	
    int age;
    char name[20];
};

int main() {
    Person p;
    p.age = 30;
    strcpy(p.name, "John");

    cout << "Name: " << p.name << ", Age: " << p.age << endl; //输出:Name: John, Age: 30
 

    return 0;
}

类(class)是一种更高级的数据封装方式,它可以包含变量(成员变量)和函数(成员函数)。类的默认访问类型是私有(private),即只能通过公有的成员函数来访问和操作数据成员。类还支持继承、多态等面向对象编程的特性。

示例代码:

#include <iostream> 
using namespace std;

class Person {
private:
    int age;
    string name;

public:
    void setAge(int newAge) {
        age = newAge;
    }

    void setName(string newName) {
        name = newName;
    }

    void printInfo() {
        cout << "Name: " << name << ", Age: " << age << endl;
    }
};

int main() {
    Person p;
    p.setAge(30);
    p.setName("John");

    p.printInfo();

    return 0;
}

C++中结构体(struct)和类(class)都可以使用访问权限修饰符(access specifiers,访问说明符)。虽然结构体和类在语法上有一些差异,但它们的成员访问权限处理方式是相同的。

通过使用public、protected和private访问权限修饰符,我们可以控制结构体和类的成员对外部的可见性和可访问性。具体来说:

public成员:被public修饰的成员可以在结构体或类的外部直接访问。

protected成员:被protected修饰的成员只能在结构体或类的内部以及派生类中进行访问。

private成员:被private修饰的成员只能在结构体或类的内部访问,对外部是不可见的。

需要注意的是,结构体和类在默认情况下的访问权限是不同的。在结构体中,默认的访问权限是public,而在类中,默认的访问权限是private。

小结:结构体和类在C++中是非常有用的工具,用于将数据和行为进行组织和封装。它们的主要区别在于默认的访问限制和语义上的差异。结构体适用于简单的数据容器和队列等操作;类提供了更多高级的特性,如继承、封装和多态等,比结构体更有扩展性、灵活性和复杂性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值