比如说一个类only
是单例模式的,那么:
private:
only(){}; //私有化它的构造器
only(const only&){}; //私有化它的复制功能,不允许外部复制它
only &operator=(const &only){}; //重载操作符=,不允许外部使用它
public:
only &getInstance(){/* 这里具体的就不写了 */};
这样外部要实例化一个 only 类时,有且只有通过only &onlyInstance = only::getInstance();
了...其实我也不太明白为什么这里写only onlyInstance = only::getInstance();
就会因为外部使用=操作符而报错,但加上&符号就能避免
然后,如果一个类有且只有一个实例,那,整个程序用且只使用这一个实例,这个实例应该是很可能作为全局变量来使用的,我这个想法应该还算合理吧?
可是如果要使用全局变量,在extern
时不允许直接赋值,只能做到extern only &onlyInstance
;
可这样一来赋值操作就用了问题,不论是'&onlyInstance = only::getInstance()还是'onlyInstance = only::getInstance()
都会通不过编译,前者是因为语法就有问题,后者是因为操作符=被禁止在外部使用...
所以想请问一下这个情况该怎么处理.
谢谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.