社区
C#
帖子详情
私有构造函数的作用????
cstt60777
2007-09-19 04:56:40
如题 不明白
私有了 还怎么用???
...全文
6465
33
打赏
收藏
私有构造函数的作用????
如题 不明白 私有了 还怎么用???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
33 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
l1058665325
2012-10-05
打赏
举报
回复
哈哈,有我晚吗?
zf2371752658
2012-06-28
打赏
举报
回复
为什么要避免在外部new对象呢,在外部new对象有什么影响呢
akzhang
2012-05-30
打赏
举报
回复
#include <iostream>
using namespace std;
class A
{
public:
static A a;
void getId()
{
cout<<"id="<<id<<endl;
}
//静态成员函数返回类的一个对象
static A* createObject()
{
a.id=200;
return &a;
}
private:
int id;
//构造函数为私有
A(){}
A(int _id):id(_id){}
};
//初始化静态成员变量
A A::a;
int main(int argc, char *argv[])
{
//错误,构造函数私有
//A a(10);
//定义指针变量不需要调用构造函数
A * obj=A::createObject();
obj->getId();
return 0;
}
ningbupt
2011-05-08
打赏
举报
回复
呵呵呵
saygoodbyetoyou
2010-02-03
打赏
举报
回复
[Quote=引用 3 楼 txwd0033 的回复:]
呵呵,早起的鸟儿有虫吃
[/Quote]
早起的虫儿被鸟吃
海牛
2007-09-21
打赏
举报
回复
起的比鸡早??程序员嘛,本来就是"鸡"~~~嘿嘿^_^
clever_zhu_fei
2007-09-21
打赏
举报
回复
早起的鸟有虫吃
早起的虫被鸟吃
Miamiiii
2007-09-20
打赏
举报
回复
学习!
Ivony
2007-09-20
打赏
举报
回复
更正
1、去掉默认构造函数。因为一个类如果不写“任何”构造函数,那么系统就会自动为这个类加上一个默认构造函数,但有时候这个类根本不需要实例,就需要一个调用不了的构造函数来把默认构造函数给排除掉。
Ivony
2007-09-20
打赏
举报
回复
1、去掉默认构造函数。因为一个类如果不写默认构造函数,那么系统就会自动为这个类加上一个,但有时候这个类根本不需要实例,就需要一个调用不了的构造函数来把默认构造函数给排除掉。
2、避免被错误的构造。有时候一个类的实例构造不能简单地由构造函数来完成,或者构造函数在语法上并不合适,这个时候一般会提供静态的创建方法来创建实例,但类型的构造必须经由构造函数,所以可以提供一个私有的构造函数给静态创建方法调用。同时,Clone或类似的方法也属于此种情况。
3、仅为别的构造函数服务。这个就不必多说了,与私有方法一样。
wdzr_826
2007-09-20
打赏
举报
回复
又见到思归。
私有构造函数,好像没什么意义
virusswb
2007-09-20
打赏
举报
回复
就是不向外提供类的构造函数,但是提供静态的方法可以构造对象,有点工厂的雏形
lbq1221119
2007-09-20
打赏
举报
回复
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/csspec/html/vclrfcsharpspec_10_10_5.asp
lbq1221119
2007-09-20
打赏
举报
回复
起的比鸡早啊
lbq1221119
2007-09-20
打赏
举报
回复
发表时间: 2007-9-19 4:56:40
MaybeHelios
2007-09-20
打赏
举报
回复
早起的虫被鸟吃!
只给自己用,对外提供一个其他的实例生成接口,在里面就可以根据自己的需要想怎么控制都行了。
shinaterry
2007-09-20
打赏
举报
回复
单例模式...
flexgo
2007-09-20
打赏
举报
回复
单例模式的应用
hel_
2007-09-20
打赏
举报
回复
私有构造函数就是由于某种原因不让你new一个事例,不过一定有方法得到该实例
lnwuyaowei
2007-09-20
打赏
举报
回复
好长时间没有见过思归发贴了。
加载更多回复(13)
Flutter
私有
仓库创建、组建
私有
化发布
1、Flutter如何做组件化?2、修改Flutter发布文件,绕过登陆google账号问题3、
私有
化部署针对Flutter组件化的容器4、发布和使用Flutter组件
C++笔记之静态成员函数可以在类外部访问
私有
构造函数
吗?
静态成员函数可以在类外部访问
私有
构造函数
。在C++中,访问控制是在编译时执行的,而不是在运行时执行的。因此,即使是
私有
构造函数
,只要它在类的
作用
域内,静态成员函数也可以访问它。这种情况通常用于实现设计模式,比如单例模式,其中
私有
构造函数
用于确保只有一个实例可以被创建,而静态成员函数用于获取该实例。虽然静态成员函数可以访问
私有
构造函数
,但它们仍然受到访问权限的限制,无法从类外部直接调用
私有
成员函数或变量。静态成员函数可以访问
私有
的
构造函数
,因为它是类的一部分,但是在类外部不能直接调用
私有
构造函数
。
私有
构造函数
的
作用
一、背景知识 对class本身来说,可以利用它的static共有成员,因为它们独立于class对象之外,不必产生对象也可以使用class的
私有
域。可以参考静态成员变量和静态成员函数在C++类中的
作用
来进行理解。二、相关说明
构造函数
被class
私有
化,需要创建对象就必须能够访问到class的
私有
域,static共有成员可以做到。假如在某个static函数中创建了该class的对象,并以引用或者指
静态成员函数与
私有
构造函数
最近在学《Effective C++》和工厂模式,都遇到了这个问题:静态成员函数创建了一个类对象,使用到了
私有
的
构造函数
。 觉得有点疑问,不是说静态成员函数只能访问静态成员函数,全局变量和自身的函数形参吗,怎么可以访问
私有
的
构造函数
呢。 首先说明静态成员函数为什么只能访问静态成员函数,全局变量和自身的函数形参,因为静态成员函数是与类相关联的,为所有类对象共享且只有一份,所以没有隐形的this指...
在Spring的Bean注入中,即使你
私有
化
构造函数
,默认他还是会去调用你的
私有
构造函数
去实例化...
在Spring的Bean注入中,即使你
私有
化
构造函数
,默认他还是会去调用你的
私有
构造函数
去实例化。 如果我们想保证实例的单一性,就要在定义<bean>时加上factory-method=””的属性,并且在
私有
构造函数
中添加防御机制。单例的getInstance()可能会添加一些逻辑,而Spring的默认调用
构造函数
去创建,就不能保证这份逻辑的准确性,所以会带...
C#
110,502
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章