c++ 10、面向对象(构造和析构方法)

1、构造方法

类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回void,其中构造函数可以不传参,也可以带参数。构造函数可用于为某些成员变量设置初始值。

#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;

class Rectangle
{
public:
    double getSquare();     // 类成员方法
    Rectangle();            // 构造方法1,无参数
    Rectangle(double len, double wid);         // 构造方法2,有参数

private:
    double length;        // 类成员属性
    double width;         // 类成员属性
};

// 定义类方法
double Rectangle::getSquare()     
{
    return length * width;
}

// 定义无参数构造方法
Rectangle::Rectangle()
{
    cout << "hello world" << endl;
}

// 定义有参数构造方法
Rectangle::Rectangle(double len, double wid)
{
    length = len;
    width = wid;
    cout << "length=" << length << " width=" << width << endl;;
}

// 有参数构造方法也可以使用初始化列表形式来写,效果与上面完全一致
/*Rectangle::Rectangle(double len, double wid) :length(len), width(wid)
{
    cout << "length=" << length << " width=" << width << endl;
}*/

int main()
{
    Rectangle r(25.0, 25.0);         // 实例对象1,调用有参数构造方法
    Rectangle r1;                    // 实例对象2,调用无参数构造方法
    double square;
    square = r.getSquare();
    cout << "面积等于:" << square << endl;
    return 0;
}

运行结果如下:

length=25 width=25
hello world
面积等于:625

可见,在实例r和r1对象时,分别调用了对应的构造方法。

2、析构方法

类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。

#include "pch.h"
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;

class Rectangle
{
public:
    double length;
    double width;
    double getSquare();
    Rectangle();
    ~Rectangle(void);
};

double Rectangle::getSquare()
{
    return length * width;
}

// 无参数构造方法
Rectangle::Rectangle() 
{
    cout << "staring" << endl;
}

// 析构方法
Rectangle::~Rectangle()
{
    cout << "ending" << endl;
}

int main()
{
    Rectangle r;
    r.length = 25.0;
    r.width = 25.0;
    double square;
    square = r.getSquare();
    cout << "面积等于:" << square << endl;
    return 0;
}

运行结果如下:

staring
面积等于:625
ending
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容