读书人

今日去华为有道面试题是这样的如果

发布时间: 2012-09-19 13:43:53 作者: rapoo

今天去华为,有道面试题是这样的,如果一个类的构造函数为私有属性,那么将无法构造该类的实例,这句话对吗
今天去华为,有道面试题是这样的,如果一个类的构造函数为私有属性,那么将无法构造该类的实例,这句话对吗

[解决办法]
错误!
单例模式!
[解决办法]
百度百科的一个例子

Java code
public class MyBean {  private static MyBean instance = null;  private MyBean(){  //do something  }  public static synchronized MyBean getInstance(){  if(instance == null){  instance = new MyBean();  }  return instance;  }  }
[解决办法]
应该是无法实例化吧
[解决办法]
单例模式中构造函数就是私有的
[解决办法]
定义一个friend。
[解决办法]
单例模式中构造函数就是私有的
[解决办法]
单例模式就是私有构造,你可以定义一个friend
[解决办法]
不对,其实考得就是单实例;

class A
{
public static A instance=new A();
private A()
{

}

}
A.instance 还是可以的
[解决办法]
单例模式就是私有构造,你可以定义一个friend
[解决办法]
friend
[解决办法]
当然不对,请看设计模式之单列模式
[解决办法]
不才,感觉如果私有构造函数是默认构造函数的话,不就可以创建实例了么?
[解决办法]
其实我们可以调试看看!
于是经过我调试答案是:。。。
[解决办法]
探讨

谁能帮我写一个完整 的C++单列模式呢

[解决办法]
class A
{
private:
A();
~A();

static A *_instance;
public:
static A* GetInstance();

static void DeleteInstance();

}

........
A *A::_instance = 0;
A* A::GetInstance()
{
if(_instance == 0)
{
instance = new A();
}
return _instance;
}

void A::DeleteInstance()
{
if(_instance != 0)
{
delete _instance;
instance = 0;
}
}
[解决办法]
单件模式~~~~~~~~~
[解决办法]
这事我常干,就是为了保证只能用我希望的方式来创建一个实例。比如:
C/C++ code
struct A{  std::shared_ptr<A> make()  {     return std::make_shared<A>();  }  private:  A(){}};
[解决办法]
学习了~

[解决办法]
mark 下去看下单列模式
[解决办法]
其实应该这样想:
如果一个类不能实例化,但这个类又必须有一个实例才能使用,那么这个类有编写的意义吗?
c++的设计者会做这么无聊的事情吗?肯定不会.
那么,就是说,这个类肯定是可以实例化的.

但是问题又在于,构造函数是私有的,私有的函数只有在类内部才能调用.

那么,结果很明显了,外部无法实例化这个类,只有这个类自己才能实例化自己...

单例模式就是其中一种类自己实例化自己的一种情况.

读书人网 >C++

热点推荐