写C也OO

以前看见有人写用C来OO,但文章看起来总是不知道所云,学不要什么东西,其实在公司开发的时候,很多C程序还是按OO的思想来开发的。于是总结一下,也希望讨论一下C的OO方法。

C其实是一种很自由的语言,而OO是一种思想,同时也是一种限制,只要自己在C中加上这种限制,也能在C中实现一定程度的OO。

比如,OO中最重要的是封装。C最大的特点就是开放。但要是有封装的思想来写C,也未尝不可。

在C++中,我们的类这样的表示(设有类A) :
class A
{
public:
    function1();
   function2();
private:
   int i;
   int j;        
}

而我要用C来写这样的类封装的代码(只能说是有明显的标志分开)就是这样:
struct  c_A_
{
   int i;
   int j;
}
typedef  c_A_  A;

cA_function1(A *,其它参数);
cA_function2(A *,其它参数);

使用的时候自学一些,一般也不会出很大的问题。

然后继承,我们当然不可能用简单的方法来完成C++那么强大的继承,但要做到继承也不是很难,比如:

struct c_B_
{
    A a;
    int m;
    int n;
}
typedef    c_B_     B;
cB_function1(B *,其它参数);
cB_function2(B *,其它参数);

当要使用A的函数时就用:
cA_function1(&(B.A),其它参数);
cA_function2(&(B.A),其它参数);


这只是两个主要的问题,但多态的问题倒是不容易想到解决的办法。请大家讨论一下这种访求的可行性。

我认为OO其实是一种方法,在没有技术支持的情况下,我们也一样可以写出很OO的C代码来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值