一、类和结构体的区别
-
成员访问权限:类中的成员默认是私有的,需要使用访问修饰符(如public、private、protected)来显式指定访问权限。而结构体中的成员默认是公共的,即可以直接访问。
-
继承:类支持继承,可以通过派生类来扩展和修改现有类的功能。而结构体不支持继承,不能作为其他结构体或类的基类。
-
内存分配和复制:通常情况下,类的实例是通过堆内存分配的,需要使用new关键字进行创建,并且在不需要时需要手动释放内存。而结构体的实例是通过栈内存分配的,它们在创建时会自动分配内存,并在超出作用域时自动释放。此外,类的实例赋值和传递时是引用传递(传递的是对象的引用),而结构体的实例赋值和传递时是值传递(传递的是实例的副本)。
-
默认构造函数:类可以有多个构造函数,并且可以定义默认构造函数(无参数构造函数),用于在创建对象时初始化成员变量。而结构体在没有定义构造函数的情况下,会自动生成一个默认构造函数,用于初始化成员变量。
-
使用场景:通常情况下,类更适合表示具有复杂行为和状态的对象,如实体对象、控制类等。而结构体更适合表示轻量级的数据结构,如坐标、颜色、配置项等。
二、
#include <iostream>
using namespace std;
class Rectangle//定义一个长方形类
{
private:
int length;
int width;
public:
void set_l(int l)//设置长度
{
length = l;
}
void set_w(int w)//设置宽度
{
width = w;
}
int get_l()//获取长度
{
return length;
}
int get_w()//获取宽度
{
return width;
}
void show();
};
void Rectangle ::show()
{
int perimeter = 2 * length + 2 * width;
int area = length * width;
cout << "矩形的面积为:"<<area <<endl;
cout <<"矩阵的周长为:"<<perimeter <<endl;
}
int main()
{
Rectangle re;
re.set_l(10);
re.set_w(8);
cout << "矩形的长为:" <<re.get_l() << endl;
cout << "矩形的宽为:" <<re.get_w() << endl;
re.show();
return 0;
}
输出效果如下:
三、思维导图