C++ 静态函数

#include
usingnamespacestd;
#definefS::init()
classS
{
public:
staticS*init(){
S*p=newS;
returnp;
}
voidprint1(){
cout<<"1fasdf"<}
voidprint2(){
cout<<"2fasdf"<}
voidprint3(){
cout<<"3fasdf"<}
};
intmain(){
f->print1();
f->print2();
f->print3();
return0;
}
今天笔试时这道题目要求改错,但是在windows下及linux下均运行无误,求解答。
至尊宝的传说
浏览 439回答 2
2回答

郎朗坤

staticS*init(){staticS*p=newS;returnp;}这个应该是考你对singleton的理解。将init里p声明为静态的就可以了。无论init被调用多少次,staticS*p=newS;这一句,在程序的生命周期,只会被执行一次。

偶然的你

这题应该算开放式问题毛病包括这些: 内存泄露了 init命名严重有误。包含了新建过程的函数,则应使用Create、GetNew之类词元 一个没有数据成员的类,其所有成员函数最好为static,否则调用前还得new一个对象,蹩脚。或者不用cpp,用c能获得更多的编译兼容性支持和程序员支持 #definef...里头,f一个字母的标示符就位于全局,而且人不像人,鬼不像鬼(实际是函数,用起来时象数据)属于找揍 假如多平台编译、被多工程引用,usingnamespacestd可以考虑优化掉,改为后面std::cout
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript