美文网首页
c++ 10、面向对象(构造和析构方法)

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

作者: 八戒无戒 | 来源:发表于2020-05-11 00:00 被阅读0次

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

相关文章

网友评论

      本文标题:c++ 10、面向对象(构造和析构方法)

      本文链接:https://www.haomeiwen.com/subject/msrenhtx.html