当前位置:首页其他 > 正文

c++结构体和类的区别

作者:野牛程序员:2023-06-19 19:52:32其他阅读 2438

C++中的结构体(struct)和类(class)是用于定义自定义数据类型的两种方式。尽管它们在语法上非常相似,但在语义和使用上有一些区别。

  1. 默认访问级别:

    • 结构体的默认访问级别是公共的(public),这意味着结构体的成员在结构体外部可以直接访问。

    • 类的默认访问级别是私有的(private),这意味着类的成员在类外部默认情况下是不可访问的。

  2. 成员和方法:

    • 结构体可以包含成员变量和方法,但默认情况下它们的访问级别都是公共的。

    • 类可以包含成员变量和方法,并且可以根据需要指定它们的访问级别,例如公共、私有或受保护。

  3. 继承:

    • 类支持继承机制,可以从其他类派生出新的类,以获得父类的属性和行为。

    • 结构体不能直接继承其他结构体或类。

  4. 默认构造函数:

    • 当一个类没有定义任何构造函数时,编译器会自动生成默认构造函数。

    • 结构体在没有定义任何构造函数时,也会生成默认构造函数。但如果定义了至少一个构造函数,则不会自动生成默认构造函数。

  5. 使用习惯:

    • 结构体通常用于简单的数据封装,比如表示一组相关的数据字段。

    • 类通常用于更复杂的对象建模,其中包含数据和对数据进行操作的方法。

虽然结构体和类有一些区别,但在很多情况下可以互相替代使用。C++中的结构体在语义上变得更加接近类,以支持更多的面向对象特性。


以下是使用C++98语法定义结构体和类的示例:

  1. 结构体(struct):

struct Point {
    int x;
    int y;
};

// 创建结构体对象并访问成员
Point p;
p.x = 10;
p.y = 20;
  1. 类(class):

class Rectangle {
private:
    int width;
    int height;

public:
    Rectangle(int w, int h) {
        width = w;
        height = h;
    }

    int area() {
        return width * height;
    }

    // Getter和Setter方法
    int getWidth() {
        return width;
    }

    void setWidth(int w) {
        width = w;
    }

    int getHeight() {
        return height;
    }

    void setHeight(int h) {
        height = h;
    }
};

// 创建类对象并调用方法
Rectangle r(5, 10);
int a = r.area();

// 使用Getter和Setter方法
int w = r.getWidth();
r.setHeight(15);


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击