项目场景:
今天在写c++类的构造函数时遇到了一个小小的bug
问题描述
在写类的构造函数时,忘记在前面加public关键字
Father类的Father.h代码:
#pragma once
#include<iostream>
using namespace std;
class Father
{
Father(int age);
void play();
protected:
int age;
};
可以看到在构造函数前面忘记添加public关键字,在实例化对象的时候就产生了如下错误:
在我不解的时候发现是忘记添加public关键字,于是编译器会将该函数默认视为private于是产生了报错
原因分析:
构造函数和析构函数与普通的成员函数没什么太大的本质差别,如果我们将构造函数放在private中,调用构造函数的时候便会产生问题,例如实例化对象的时候。
解决方案:
构造函数和析构函数不是一定不可以放在private中,构造函数和析构函数与普通的成员函数没什么太大的本质差别,只要我们不去调用,就不会发生问题,但是这样做并没有什么实际价值,我们一般还是将构造函数和析构函数放在public中来自动调用