2024年C C++最全如何把CPP源程序改写成C语言?_如何把c程序变为c文件,2024年最新涨姿势了

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

private:
int b;
};
A::A()
{
b=0;
}

void A::func(int a)
{
b=a;
}

typedef struct classA A;
struct classA
{
void (*A)(struct classA *p);//构造函数指针
void (*U)(struct classA *p);//析构函数指针
void (*func)(struct classA *p,int a);
int b;
};

void fun_A(A *p)
{
p->func=classA_func; //将函数指针初始化
}

void IA(A *p) //构造函数,命名规则在类名前加I
{
fun_A§;
p->b=0; //原构造函数所作部分
}

void classA_func(A *p,int a)
{
p->b=a;
}


在使用的地方采用如下方式:



A s=(A)malloc(sizeof(A)); s->A=IA; s->A(s);


类的析构函数所作的工作是释放所占的资源。


在C中,无论是哪个struct都用函数指针U替代析构函数。之所以所有的struct都用指针U是基于如下情况:


如果将子类指针赋给基类指针,基类指针在释放的时候不必考虑调用哪个函数名的析构函数,只需调用成员函数U即可。成员函数U需要像一般成员函数一样在fun\_类名()函数中指定。


类的析构函数是由系统调用的,在C中则要显式调用。至于何时调用,要准确判断。


类的拷贝构造函数主要用途是加快以下情况下类的构建速度:


**1.** 作为参数传给函数。(additem(Itema))  
 **2.** 作为函数返回值。  
 **3.** 实例化类时作参数。


这三种情况下都是由系统直接调用类的拷贝构造函数而不是构造函数。


注意:C=D;不会调用拷贝构造函数,这种情况下使用的是重载‘=’运算符的方法。(详见运算符重载);


由于C中定义struct变量的时候,使用的全部是指针,不会用到拷贝构造函数,所以暂不考虑。对于原来函数参数或者返回值需要类变量的,要全部转化为类指针的方式。实例化类时作参数的情况,可以通过另外定义一个带参数的构造函数来解决。


内联函数和虚函数的修饰符inline 、virture 要全部去掉。内联函数体则要去掉,将内联函数在外面定义成一个函数。如:



class B
{

virture void funb();
inline int add()const {return a+b;};
private:
int a;
int b;

}


改为:



typedef classB B;
struct classB
{

void (*funb)(struct classB *p);
int (*add)(struct classB *p);
int a;
int b;
}

void classB_funb(B *p)
{

}

int classB_add(B *p)
{
return p->a+p->b;
}

void fun_classB(B *p)
{

p->funb=classB_funb;
p->add= classB_add;
}


类中重载有函数重载和运算符重载两种:  
 \*\*1)函数的重载


\*\*函数重载满足的条件是:函数名相同,参数个数或者参数类型不同。  
 这样在调用的时候,会根据你输入的参数不同,调用不同的函数。  
 在C中只好分别起不同的名字,没有别的解决办法。


\*\*2)运算符重载


\*\*运算符重载只是为了满足一般的运算符使用的习惯而又不会出现错误。  
 C中不支持运算符重载,可以定义一个函数实现该功能。  


![img](https://img-blog.csdnimg.cn/img_convert/75aae89d7be0f59bf0bedfdf27c7a5e4.png)
![img](https://img-blog.csdnimg.cn/img_convert/80ab234ee271ccdb16238efb246561fc.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

95%以上C C++开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值