51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

c++类

类 {#类}

构造函数 {#构造函数}

和类名相同,无返回值的叫做构造函数。

eg.


在这个例子里,创建了Circle的类,并创建了2个构造函数Circle()(构造函数前无函数声明),2个构造函数分别有参数和无参数,重载函数对应初始值和设定值。

当创建对象circle1执行Circle circle1时会执行构造函数,无参数传入则调用无参的构造函数。

当创建对象circle2执行Circle circle2(25)时会执行构造函数,有参数传入则调用有参对应的的构造函数。

this->用于指向对象内的变量,可以区分。

eg

|-----------|--------------------------------------------------------------------------------------------------------| | 1 | fan(int speed,bool on,double radius){this->speed = speed,this->on = on,this->radius = radius;} |

UML类图 {#UML类图}

析构函数 {#析构函数}

constructor 构造函数(可以多个,可以重载)
destructor 析构函数(只有一个,不能带参)

类中,系统自带构造函数和析构函数,如果手动创建,则不自带。

~类名(){}归还类所占用的空间

析构函数(Destructor)是在对象被销毁时自动调用的特殊成员函数。它的主要作用是执行一些清理工作,释放对象在生命周期中分配的资源,例如内存、文件句柄、网络连接等。析构函数的名称与类名相同,但在名称前加上波浪号(~)。

当对象超出其作用域,程序退出,或者通过delete运算符释放动态分配的内存时,析构函数会被调用。这确保在对象生命周期结束时,相关的资源可以得到正确的释放,防止资源泄漏。

而且先调用的,后撤销, 后调用的,先撤销

对象超出其作用域: 当一个对象在一个代码块中声明并创建,当该代码块执行结束时,对象就超出了其作用域。此时,析构函数会被调用,{}块内的代码将执行。

|---------------------|--------------------------------------------------------------------------------| | 1 2 3 4 5 6 | { MyClass obj; // 构造函数被调用 // 在这个代码块结束时,obj 超出了作用域,析构函数被调用 } // 析构函数被调用 |

delete运算符释放动态分配的对象: 如果对象是通过new运算符动态分配内存而创建的,当使用delete运算符释放该对象时,析构函数会被调用。

|---------------------|--------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 | MyClass* objPtr = new MyClass(); // 构造函数被调用 // 在这里进行一些操作 delete objPtr; // 析构函数被调用 |

程序结束: 当整个程序结束运行时,全局对象的析构函数会被调用。

|---------------------------|---------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 | MyClass globalObj; // 构造函数被调用 int main() { // 主程序执行 // 全局对象 globalObj 在程序结束前析构函数被调用 return 0; } |

赞(1)
未经允许不得转载:工具盒子 » c++类