构造函数和析构函数可以是私有或保护的吗?

本文探讨了C++中构造函数和析构函数可以是私有或保护的特殊情况,引用了系统头文件iostream.h的示例,并指出至少需要一个公共构造函数。同时,作者分享了个人著作的出版经历,寻求通过博客发布内容以吸引读者。
摘要由CSDN通过智能技术生成

构造函数和析构函数可以是私有或保护的吗?

 

我的书稿还对流行的教科书存在的一些问题进行了探讨,笔者相信,连教科书都会出现的问题一定具有探讨的必要。

在书稿中隐去了发生问题的教科书的名字,但是在博客文章中我将指出这些书的名字。

孟威、刘慧宁、机工版、ISBN:7-111-08318-078页“构造函数应声明为公有函数”,83页第3行“它(指析构函数)也是公有的函数”

有教科书云:“构造函数应声明为公有函数”、“它(指析构函数)也是公有的函数”。我们因此产生疑问,构造函数和析构函数可以是私有或保护的吗?答案是肯定的,请看系统头文件iostream.h里的一段代码:

class _CRTIMP iostream : public istream, publicostream {

public:

       iostream(streambuf*);

       virtual ~iostream();

protected:

        iostream();

        iostream(constiostream&);

private:

        iostream(ios&);

       iostream(istream&);

       iostream(ostream&);

};

其实,如果一个构造函数仅仅是在成员函数里生成对象时用到,则它就可以定义成私有或保护的,如下例:

#include <iostream.h>

class  Test{

private:

         int  num;

         Test(double d){   num=d;     };

//       ~Test(){};//系统报错

public:

         Test(intn){          num=n;      };

         ~Test(){};

         voidInnerCreate();

};

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值