CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

标准C怎么实现类似C++的类的功能?

楼主zhaoxueli(再别康桥)2003-09-02 22:33:31 在 C/C++ / C++ 语言 提问

就是说比如定义一个图形类,包括一些变量和一些函数  
  变量如:是否绘制b_draw、起点StartPoint等  
  函数如:draw(),delete()等  
  是否还能做成虚函数的形式?  
  能否举个例子? 问题点数:0、回复次数:13Top

1 楼mgan(ROOT→〖将来是我〗)回复于 2003-09-02 22:39:15 得分 0

就是在他的结构中定义啊  
  类似于类的Top

2 楼xinhe007(星河)回复于 2003-09-02 23:58:51 得分 0

用结构体是不行的.不能实现虚函数,也不能实现类的继承,多态等一些重要的性质,在要C里实现类的这些功能并不是很容易,  
  举个很简单的例子;如一个矩形类Crect,有一个成员函数setcolor()来设置矩形颜色,  
  我们定义rect1和rect2这两个对象,  
  如:rect1.setcolor("red");  
        rect2.setcolor("black");  
  从类的角度我们很容易理解,就是设置rect1的颜色为:"red",rect2的颜色为black,  
  但类里setcolor函数里的color值是什么呢,是red,还是black呢?显然这在C的结构成里一下很难实现,其实这里是用到了一个this指针,  
        rect1.setcolor("red",(Crect*)&rect1);  
        rect2.setcolor("black",(Crect*)&rect2);  
  这个多出来的参数就是this   指针  
  class   Crect  
  {  
  public:  
    void   setcolor(CString   color)  
      {  
        m_color=color;  
        }  
  }  
  编译之后是  
  class   Crect  
  {  
  public:  
    void   setcolor(CString   color,(Crect*)this)  
      {  
        this->m_color=color;  
        }  
  }  
  如果要C的结构体中实现类的功能,至少就是像以上这样加一个this指针一样的东西,所以比较麻烦  
  你还不如就用C++来得快.Top

3 楼fullsail(远航)回复于 2003-09-03 00:21:47 得分 0

Object-Oriednted   Programming   whith   ANSI-C.pdf  
   
  我没有研究过,但你可以找一下看看。希望又帮助。Top

4 楼zhaoxueli(再别康桥)回复于 2003-09-03 09:31:09 得分 0

有没有什么替代的相似的办法?  
  如果一个大项目,总是要有所归划的,不能埋头瞎写吧  
  类的概念还是要的  
  我不能用C++,因为选择的就只能是C,做嵌入式  
  linux和c  
  Top

5 楼bigdoors(行远)回复于 2003-09-03 10:22:50 得分 0

用Object-Oriednted   Programming   whith   ANSI-C里的方法做项目没有必要,  
  用c有用c的方法,c一样做大项目。用函数指针和void*可以使c的代码和c++一样灵活Top

6 楼xinhe007(星河)回复于 2003-09-03 22:28:31 得分 0

如果只能用C的话那就不要用面向对象的方法了,C一样可以写大项目,先用面向过程的方法去规化设计,然后再编程.效果是一样的,程序设计也是这样发展来的,那以前没有面向对像的概念怎么办了,你的说的替代其实是要在C里加入面向对像的机制,这从某种角度上来讲就是把C演化成C++,这样的话演化过程可能比你的项目还大,没必要,顺便问一下,怎么不用java呢,不限于哪种平台,又是面向对象.Top

7 楼ezhou(煮花生)回复于 2003-09-03 23:16:21 得分 0

嵌入式可能对代码的效率要求高,所以用c的多。  
  用c来做类c++的东西不容易的。Top

8 楼zhaoweikid(星尘细雨)回复于 2003-09-04 03:01:46 得分 0

嵌入式一样的可以用C++啊,现在用C++做的也有,据说日本在这方面发展的比较多Top

9 楼qianmo(广袤)回复于 2003-09-04 08:26:36 得分 0

强烈建议JAVATop

10 楼jakeye(旱天雷)回复于 2003-09-04 09:21:15 得分 0

c++的成员函数在c中可以用函数指针来模拟。然后给此函数针指在外部赋值。Top

11 楼bluedodo(笑三少)回复于 2003-09-04 10:41:39 得分 0

结构体   +   函数指针Top

12 楼atlcat(猫咪饲养员)回复于 2003-09-04 11:57:20 得分 0

标准C不支持虚函数,好象连成员函数都不行(标准C好象就是吧)Top

13 楼zhaoxueli(再别康桥)回复于 2003-09-04 15:18:48 得分 0

那一般怎么规划呢?就比如作图,可能有点、线、面等等  
  都牵涉到绘图、颜色、坐标起始、选中热点等函数,一个一个去写吗?  
   
  好象是说结构体+指针是较优方法  
  高手能不能以代码形式说一下?Top

相关问题

  • C++标准库的string类
  • C++标准库的string类
  • 标准C++或C中,有无实现trim功能的函数?
  • 《掌握标准 C++ 类(附1CD)》
  • C#是否能用MFC标准类库
  • C#实现 类似DreamWeaver 简单功能
  • C++标准库.
  • 标准C
  • 标准C++ !!!!
  • c标准ISO9899

关键词

  • c++
  • 函数
  • 指针
  • 代码
  • 项目
  • 结构
  • 类
  • setcolor
  • crect
  • rect

得分解答快速导航

  • 帖主:zhaoxueli

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo