关于纯虚函数

sc_valentine21 2010-12-23 02:48:25

struct IExec : public IRef
{
virtual const char* GetName() = NULL;
};


看到一段这样的代码。显然是一个纯虚函数,但是我们通常认为的是,应该“= 0”,这里用“= NULL”。
而NULL本身则是定义成0的。

那么我的问题是,这样写到底好还是不好呢?
...全文
228 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
InfidelX 2010-12-23
  • 打赏
  • 举报
回复
没有什么区别,知道就成了
qwer_boo 2010-12-23
  • 打赏
  • 举报
回复
楼顶的几位好想解释的比较好 学习了
wendellup 2010-12-23
  • 打赏
  • 举报
回复
见识少。。没看过=NULL的。。
snowzl 2010-12-23
  • 打赏
  • 举报
回复
写0比较好
Rico_Liu 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 xudashu123 的回复:]

我建议还是写0,因为写null是,那是一个预处理,所以还有一个代码替换过程,会影响代码的效率的
[/Quote]

预处理在编译阶段就会替换的,不会影响代码效率
xudashu123 2010-12-23
  • 打赏
  • 举报
回复
我建议还是写0,因为写null是,那是一个预处理,所以还有一个代码替换过程,会影响代码的效率的
dingshaofengbinbin 2010-12-23
  • 打赏
  • 举报
回复
按标准来!!是什么就是什么!!
pstrunner 2010-12-23
  • 打赏
  • 举报
回复
用0更符合语法规范。
Rico_Liu 2010-12-23
  • 打赏
  • 举报
回复
哥,你这是虚函数,是函数,它的返回值是指针。
指针当然用NULL好了,但定义纯虚函数肯定是用0了。
prohibit 2010-12-23
  • 打赏
  • 举报
回复
"=0"更好些,不影响结果、不易写错,万一把NULL写成NUL就悲剧了,而且"=0" 比"=NULL"少打三个字符、还不用一边按住shift键一边打,O(∩_∩)O~~~
sc_valentine21 2010-12-23
  • 打赏
  • 举报
回复
这个跟指针是没有关系的。纯虚函数定义就是" = 0",虽然"= NULL"也是可以的,因为NULL就是0,但是个人不觉得这样好。
lhy 2010-12-23
  • 打赏
  • 举报
回复
我觉得写成=NULL好一些,能让人想到指针。
ningweidong 2010-12-23
  • 打赏
  • 举报
回复
反正值都是一样的,怎么写都可以。
建议还是用null
sc_valentine21 2010-12-23
  • 打赏
  • 举报
回复
哈哈,赞成 “= 0”,“= NULL”,看着多别扭。
sunqiang263 2010-12-23
  • 打赏
  • 举报
回复
习惯的约定而已 在个人了
zhengjiankang 2010-12-23
  • 打赏
  • 举报
回复
额。。。这也问。。。
Jurang 2010-12-23
  • 打赏
  • 举报
回复
支持 virtual const char* GetName() = 0;
liu_siat 2010-12-23
  • 打赏
  • 举报
回复
约定俗成,还是=0的好。
就想叫yoko 2010-12-23
  • 打赏
  • 举报
回复
无所谓拉
不过还是写=0吧
大家看得都不别扭
yuyan_linger 2010-12-23
  • 打赏
  • 举报
回复
我觉得写=0好一些
大众也易懂

如果之前有谁define NULL成一个别的值了 这就有问题了 虽然几乎没有可能
加载更多回复(5)
西大成人教育计算机语言(VC)在线作业复习题全文共14页,当前为第1页。西大成人教育计算机语言(VC)在线作业复习题全文共14页,当前为第1页。计算机语言(VC) 复习资料 西大成人教育计算机语言(VC)在线作业复习题全文共14页,当前为第1页。 西大成人教育计算机语言(VC)在线作业复习题全文共14页,当前为第1页。 一.单选题(共23题,50.6分) 1 在类中说明的成员可以使用关键字的是( )。 Apublic Bextern Ccpu Dregister 正确答案: A 2 在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是( )。 A作为友元函数重载的一元运算符 B作为成员函数重载的一元运算符 C作为友元函数重载的二元运算符 D作为成员函数重载的二元运算符 正确答案: B 3 关于纯虚函数和抽象类的描述中,错误的是( )。 A纯虚函数是一种特殊的虚函数,它没有具体实现 B抽象类是指具有纯虚函数的类 C一个基类中说明有纯虚函数,该基类的派生类一定不是抽象类 D抽象类只能作为基类使用,其纯虚函数的实现由派生类给出 正确答案: A 4 编写C++程序一般需经过的几个步骤依次是( )。 A编辑、调试、编译、连接 B编辑、编译、连接、运行 C编译、调试、编辑、连接 D编译、编辑、连接、运行 正确答案: B 5 友元的作用是( )。 A提高程序的运行效率 B加强类的封装性 C实现数据的隐藏性 D增强成员函数的种类 正确答案: A 6 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体 也就是( )。 A类 B对象 C函数体 西大成人教育计算机语言(VC)在线作业复习题全文共14页,当前为第2页。西大成人教育计算机语言(VC)在线作业复习题全文共14页,当前为第2页。 D数据块 西大成人教育计算机语言(VC)在线作业复习题全文共14页,当前为第2页。 西大成人教育计算机语言(VC)在线作业复习题全文共14页,当前为第2页。 正确答案: A 7 下列二维数组定义,正确的是( )。 Aint a[5][]; Bint a[][5] Cint a[][3]={{1,3,5},{2}} Dint a[](10) 正确答案: C 8 一个类的友元函数或友元类能够通过成员操作符访问该类的( )。 A私有成员 B公有成员 C保护成员 D所有成员 正确答案: D 9 文件包含命令中被包含的文件的扩展名为( )。 A必须是.h B不能是.h C可以是.h或.cpp D必须是.cpp 正确答案: C 10 假定一个类的构造函数为A(int aa,int bb) {a=aa--;b=a*bb;},则执行A x(4,5);语句后 ,x.a和x.b的值分别为( )。 A3和15 B5和4 C4和20 D20和5 正确答案: C 11 决定C++语言中函数的返回值类型的是( )。 Areturn语句中的表达式类型 B调用该函数时系统随机产生的类型 C调用该函数时的主调用函数类型 D在定义该函数时所指定的数据类型 正确答案: D 12 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( )符号作为分隔符。 A空格或逗号 B逗号或回车 C逗号或分号 D空格或回车 西大成人教育计算机语言(VC)在线作业复习题全文共14页,当前为第3页。西大成人教育计算机语言(VC)在线作业复习题全文共14页,当前为第3页。正确答案: D 西大成人教育计算机语言(VC)在线作业复习题全文共14页,当前为第3页。 西大成人教育计算机语言(VC)在线作业复习题全文共14页,当前为第3页。 13 设有代码"struct BOOK{ char titile[40]; float price; }; 则下列不正确的变量定义语句是( )。 A BOOK book; B BOOK book={"C++编程",27.5}; C BOOK *x=new BOOK; D BOOK x=new BOOK; 正确答案: D 14 下面循环语句中内层循环的循环体S的执行总次数为( )。 for (int i=0; i

64,653

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧