标准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




