定义一个类,该类中存在两个函数,差别只有const
#include "stdafx.h"
#include<iostream>
using namespace std;
class MyClass
{
public:
void show_n(); //可以进行修改
void show_n()const; //函数对当前对象是只读的
~MyClass(); //输出此时对象的地址
};
成员函数如下
void MyClass::show_n()
{ cout << "free" << endl;}
void MyClass::show_n()const //两个函数差别只有const
{ cout << "limited" << endl;}
MyClass::~MyClass()
{ cout << this << endl;}
在main中调用这两个成员函数
int main()
{
MyClass a; const 时候用const定义的函数
const MyClass b; 没有用const定义对象时优先用普通的函数
a.show_n();
cout << "================" << endl;
b.show_n();
发现b调用const 的那个,a调用无const的那个
================================================
关于形参与析构函数的知识
如果在一个函数中形参为类类形的,在形参被销毁时,会调用析构函数
MyClass::~MyClass()
{ cout << this << endl;}
void a(MyClass a)
{ a.show_n();}
void a1(const MyClass& a) // 与之前相比,是对原对象进行操作,就不会调用析构函数,如果不想让调用人员修改原对象,加上const
{ //如果没有用const修饰的函数,在函数中调用一个const 的对象的函数,会报错的
a.show_n();
}
更进一步,若定义的函数的类型也为该类类型的,会调用2次析构函数,其中,一次为释放形参,一次为返回值被销毁
注:返回值放在一个临时区域,当执行下一条语句时,返回值被销毁
====================================
动态内存开辟与析构函数的传送门如下
https://blog.csdn.net/zimuHP/article/details/83417236