思维导图
类和结构体的区别
1、结构体是一种值类型,类是引用类型。值类型用于存储数据的值,引用类型用于存储对实际数据的引用。即结构体就是当成值来使用的,类则通过引用来对实际数据操作。
2、结构使用栈存储(Stack Allocation),类使用堆存储(Heap Allocation)。栈的空间相对较小,但数据访问效率相对较高。堆的空间相对较大,但数据访问效率相对较低。
3、类是反映现实事物的一种抽象,而结构体的作用只是一种包含了具体不同类别数据的一种包装,结构体也可以继承,也可以有函数(c中结构体没有函数),但是不具备类的继承多态特性。
4、结构体赋值是直接赋值, 而类赋值是传递对象的地址。
5、结构体内默认访问权限和继承权限是public,类内默认访问权限和继承权限是private。
6、继承模板参数中,可以使用class定义,但是不能用struct来定义。
7、C语言中,空结构体的大小为0,而C++中空结构体/类 的大小为1。
练习
定义一个矩形类(Rectangle),包含私有成员:长(length)、宽(width), 定义成员函数:
设置长度:void set_l(int l)
设置宽度:void set_w(int w)
获取长度:int get_l();
获取宽度:int get_w();
展示函数输出该矩形的周长和面积:void show()
#include <iostream>
using namespace std;
class Rectangle
{
private:
int length;
int width;
public:
void set_length(int l)
{
length = l;
}
void set_width(int w)
{
width = w;
}
int get_length()
{
return length;
}
int get_width()
{
return width;
}
void show()
{
cout << "周长为: " << 2*(length+width) << endl;
cout << "面积为: " << length*width << endl;
}
};
int main()
{
Rectangle rec;
rec.set_length(10);
rec.set_width(5);
cout << "长度为: " << rec.get_length() << endl;
cout << "宽度为: " << rec.get_width() << endl;
rec.show();
return 0;
}