C++中struct和class的区别

struct和class默认的访问权限不一样,而且类是有继承的,结构体没有继承。

参考文章

  • C++结构体内部成员变量及成员函数默认的访问级别是public,而c++类的内部成员变量及成员函数的默认访问级别是private。
  • C++结构体的继承默认是public,而c++类的继承默认是private。
#include <iostream>
using namespace std; 

struct point
{
public:
    point() :x_(0.0), y_(0.0)
    {
        std::cout << "default constructor point\n";
    }
    point(double x, double y) :x_(x), y_(y)
    {
        std::cout << "constructor point(" << x << ", " << y << ")\n";
    }
    ~point()
    {
        std::cout << "default destructor point\n";
    }

    double get_x()
    {
        return x_;
    }
    
    double get_y()
    {
        return y_;
    }

private:
    double x_;
    double y_;
};

class point_class
{
public:
    point_class() :x_(0.0), y_(0.0)
    {
        std::cout << "default constructor point_class\n";
    }
    point_class(double x, double y) :x_(x), y_(y)
    {
        std::cout << "constructor point_class(" << x << ", " << y << ")\n";
    }
    ~point_class()
    {
        std::cout << "default destructor point_class\n";
    }

    double get_x()
    {
        return x_;
    }
    
    double get_y()
    {
        return y_;
    }

private:
    double x_;
    double y_;
};


int main()
{
    point pt;
    std::cout << pt.get_x() << "\n";
    std::cout << pt.get_y() << "\n";
    std::cout << "sizeof( double ): " << sizeof(double) <<
        ", sizefof( point ): " << sizeof(point) << "\n";

    point_class pt_c;
    std::cout << "sizeof( double ): " << sizeof(double) <<
        ", sizefof( point_class ): " << sizeof(point_class) << "\n";
}

这是运行结果

总结:C++中的struct与class比较类似。struct默认访问权限是public,class是private;class有继承,多态机制,而struct没有。

posted @ 2022-08-10 18:00  独特且押韵  阅读(133)  评论(0)    收藏  举报
Title