C++中空类有何妙用

c_rrb 2014-03-31 04:10:34
加精
虽然说是空类,但编译器还会给我们增加数据成员及成员函数。
不知道这种空类具体用哪些用处?望一一举例
...全文
4082 68 打赏 收藏 转发到动态 举报
写回复
用AI写文章
68 条回复
切换为时间正序
请发表友善的回复…
发表回复
_离子 2014-08-09
  • 打赏
  • 举报
回复
如若项目中建立这种空类,大多应该是为保持某种统一风格和扩展性的作用吧,便于管理和拓展。
c_rrb 2014-04-20
  • 打赏
  • 举报
回复
引用 41 楼 r3000 的回复:
不知道楼主的空类指的具体是什么,如果是一个什么都没有的空类,可以在扩展开发上面有很多的用处: 举个例子,我有项业务,需要把日志管理封装成一项服务,在不同的项目里用,有时候为了性能又要求关闭日志 输出,比如我定义了日志管理的类和接口(C++中的纯虚函数类),然后分别实现了输出到屏幕的日志、输出到数据库 的日志和输出到文件的日志,那么我可以配置用户用哪种日志管理,如果用户不需要日志管理,我就会给他空类(实现了 接口但什么也不做),这样,使用日志的程序这样写 ILog->Output("日志文本"....),可以配置它使用空类,不需要改使用 这个服务的前台代码了。 这种用法在Java,C#里面都有,貌似也是一种设计模式。
说得好
lx624909677 2014-04-11
  • 打赏
  • 举报
回复
引用 9 楼 u012421456 的回复:
这里说的,还凑合吧——http://blog.sina.com.cn/s/blog_93b45b0f01015s95.html
这里解释的不错
twtiqfn 2014-04-08
  • 打赏
  • 举报
回复
好久没有学C++
kenny_hwei 2014-04-07
  • 打赏
  • 举报
回复
Seek_you 2014-04-07
  • 打赏
  • 举报
回复
凑热闹来者的。
细粉条 2014-04-06
  • 打赏
  • 举报
回复
学习一下
kenny_hwei 2014-04-06
  • 打赏
  • 举报
回复
冷夜独眠 2014-04-06
  • 打赏
  • 举报
回复
可以用来扯蛋……
ojc520520 2014-04-06
  • 打赏
  • 举报
回复
基本不用
wangsufu77 2014-04-06
  • 打赏
  • 举报
回复
和java中的接口是不是同一个道理啊?不懂
xiaoxxxy 2014-04-06
  • 打赏
  • 举报
回复
等用到了,你就会恍然大悟:原来还有这种用途。那时才会有深切的体会,不然知道了也没用
DevilDust 2014-04-05
  • 打赏
  • 举报
回复
学习了
赵4老师 2014-04-04
  • 打赏
  • 举报
回复
引用 46 楼 qinchange 的回复:
[quote=引用 4 楼 zhao4zhong1 的回复:] 谁要跟我谈SQL中NULL的妙用我就跟他急!
没有谈SQL啊,是谈c++类。[/quote] 任何开发语言中的各种所谓空值,给使用其开发的人来说,带来的困惑或失误或损失都比带来的方便或高效或利益多吧。 我猜。
没事人 2014-04-04
  • 打赏
  • 举报
回复
引用 11 楼 gigglesun 的回复:
[quote=引用 9 楼 u012421456 的回复:] 这里说的,还凑合吧——http://blog.sina.com.cn/s/blog_93b45b0f01015s95.html
不错,test OK

#include<iostream>
using namespace std;
int main()
{
    int a[0];
    class B{};
    struct C
    {
        int  m;
        int  n;
        char buffer[];
    };
    class D
    {
        int  s[0];
    };

    cout << "sizeof(a)="<<sizeof(a)<<endl;//0
    cout <<"B{}="<<sizeof(B)<<endl;//1
    cout<<"C="<<sizeof(C)<<endl;//8
    cout<<"D="<<sizeof(D)<<endl;//0

    return 0;
}
[/quote]这个主意真心不错
G-Turbo 2014-04-04
  • 打赏
  • 举报
回复
STL里面的萃取特性用的就是空类。
xiaoxiangqing 2014-04-04
  • 打赏
  • 举报
回复
应该是用得比较少
qingchange 2014-04-04
  • 打赏
  • 举报
回复
引用 52 楼 zhao4zhong1 的回复:
[quote=引用 46 楼 qinchange 的回复:] [quote=引用 4 楼 zhao4zhong1 的回复:] 谁要跟我谈SQL中NULL的妙用我就跟他急!
没有谈SQL啊,是谈c++类。[/quote] 任何开发语言中的各种所谓空值,给使用其开发的人来说,带来的困惑或失误或损失都比带来的方便或高效或利益多吧。 我猜。[/quote] 存在即合理。编程语言中某一种特性的存在总有他存在的原因。在某一种情况下还偏偏没它不行。
qingchange 2014-04-04
  • 打赏
  • 举报
回复
引用 52 楼 zhao4zhong1 的回复:
[quote=引用 46 楼 qinchange 的回复:] [quote=引用 4 楼 zhao4zhong1 的回复:] 谁要跟我谈SQL中NULL的妙用我就跟他急!
没有谈SQL啊,是谈c++类。[/quote] 任何开发语言中的各种所谓空值,给使用其开发的人来说,带来的困惑或失误或损失都比带来的方便或高效或利益多吧。 我猜。[/quote] 存在即合理。编程语言中某一种特性的存在总有他存在的原因。在某一种情况下还偏偏没它不行。
beyondcj 2014-04-04
  • 打赏
  • 举报
回复
加载更多回复(47)

64,701

社区成员

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

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