猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
在类中将构造函数私有化有什么用?
为什么要在类中将构造函数设为私有?因为我们总是需要构造函数公开。
湖上湖
浏览 1058
回答 3
3回答
慕娘9325324
您可能需要私有构造函数的一些原因:只能从类本身内部的静态工厂方法访问构造函数。Singleton也可以属于此类别。一个实用程序类,仅包含静态方法。
0
0
0
长风秋雁
通过提供私有构造函数,可以防止在此类之外的任何地方创建类实例。提供这种构造函数有几种用例。答:您的类实例是在static方法中创建的。static然后将该方法声明为public。class MyClass(){private: MyClass() { }public: static MyClass * CreateInstance() { return new MyClass(); }};B.你的课是单身。这意味着程序中最多只能有一个类实例。class MyClass(){private: MyClass() { }public: MyClass & Instance() { static MyClass * aGlobalInst = new MyClass(); return *aGlobalInst; }};C.(仅适用于即将到来的C ++ 0x标准)您有几个构造函数。其中一些被宣布public,另一些被宣布private。为了减小代码大小,公共构造函数会“调用”私有构造函数,这些私有构造函数依次完成所有工作。public因此,您的构造函数称为委托构造函数:class MyClass{public: MyClass() : MyClass(2010, 1, 1) { }private: MyClass(int theYear, int theMonth, int theDay) { /* do real work */ }};D.您想限制对象复制(例如,由于使用共享资源):class MyClass{ SharedResource * myResource;private: MyClass(const MyClass & theOriginal) { }};E.您的课程是实用程序课程。也就是说,它仅包含static成员。在这种情况下,程序中永远都不能创建对象实例。
0
0
0
泛舟湖上清波郎朗
留下一个“后门”,该后门允许另一个朋友类/函数以用户禁止的方式构造对象。我想到的一个例子是构造迭代器(C ++)的容器:Iterator Container::begin() { return Iterator(this->beginPtr_); }// Iterator(pointer_type p) constructor is private,// and Container is a friend of Iterator.
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
源码
spark分组排序提取前N个值
1 回答
请问转让门店小程序需要源码吗?门店小程序有自己的源代码吗?是否要注册计算机软件著作权才可以交易?
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续