今天去华为,有道面试题是这样的,如果一个类的构造函数为私有属性,那么将无法构造该类的实例,这句话对吗
今天去华为,有道面试题是这样的,如果一个类的构造函数为私有属性,那么将无法构造该类的实例,这句话对吗
[解决办法]
错误!
单例模式!
[解决办法]
百度百科的一个例子
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
[解决办法]
当然不对,请看设计模式之单列模式
[解决办法]
不才,感觉如果私有构造函数是默认构造函数的话,不就可以创建实例了么?
[解决办法]
其实我们可以调试看看!
于是经过我调试答案是:。。。
[解决办法]
struct A{ std::shared_ptr<A> make() { return std::make_shared<A>(); } private: A(){}};
[解决办法]
学习了~
[解决办法]
mark 下去看下单列模式
[解决办法]
其实应该这样想:
如果一个类不能实例化,但这个类又必须有一个实例才能使用,那么这个类有编写的意义吗?
c++的设计者会做这么无聊的事情吗?肯定不会.
那么,就是说,这个类肯定是可以实例化的.
但是问题又在于,构造函数是私有的,私有的函数只有在类内部才能调用.
那么,结果很明显了,外部无法实例化这个类,只有这个类自己才能实例化自己...
单例模式就是其中一种类自己实例化自己的一种情况.