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没有。