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

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

猜你喜欢

转载自blog.csdn.net/cnds123/article/details/131918979