C和C++的区别什么,将一个C程序改写成C++时需要注意什么呢?

xeonfeng 2006-09-23 11:04:53
如题。
C和C++的区别什么,将一个C 程序改写成C++时需要注意什么呢?
...全文
1717 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
genius_hb 2006-10-09
  • 打赏
  • 举报
回复
注意函数声明,原形就差不多了
xuejinn 2006-10-08
  • 打赏
  • 举报
回复
mark
solarhe 2006-10-07
  • 打赏
  • 举报
回复
C与C++我个人认为只是编程思想的差别(也可以说思维方式的差别)。
本质上讲C++能做到的C也同样能做到,C能做到的C++也同样能做到。
差别在于编译器做的多少!

C++诱惑人的地方我觉得不是它的封装性,你可以约定所有结构体的成员
变量必须通过函数来访问(而不是直接访问它)。比如
struct xxx
{
int member1;
.
.
.
}

fun1(xxx* p, ...);
C++ 也是这样做的,在所有的类成员函数的形参列表中加入了this指针,
唯一的区别是编译器帮你完成了。

虚函数同样也是把你该做的事情交给了编译器。
所以我有一个感觉,就是一旦你理解了C++你就变的很懒撒,不愿在重新
使用C,原因不是C++会生成更好的代码,而是我们可以写较少的代码。

C++诱惑人的地方是它的代码的重用性,和多态。虽然这些都可以通过C实现。
但是我们愿意当一些做菜的人,而不是种菜的人。

不过我想告诉大家种菜是一种享受,而且买的菜不一定都新鲜好吃!

Dugowe 2006-10-07
  • 打赏
  • 举报
回复
楼上的请注意..面向对象方法....
最后两个字 : 方法
c当然可以写...
或许你觉得不顺眼,但用c写就是那样,两种不同的语言难道写东西会一样吗
yin0731 2006-10-07
  • 打赏
  • 举报
回复
学习..........
xeonfeng 2006-10-06
  • 打赏
  • 举报
回复
呵呵,好呀,还有没有对此有见解的朋友
tongqiwenwujun 2006-10-06
  • 打赏
  • 举报
回复
c也能够写面向对象的程序吗?
我算是大开眼界了!!!
onemonth 2006-09-25
  • 打赏
  • 举报
回复
对应c程序的每一行代码,c++的每一行代码需要在后面加上"++"两个符号。其他完全相同。
erpproxp 2006-09-25
  • 打赏
  • 举报
回复
看来懂C++未必懂C
周江涛 2006-09-25
  • 打赏
  • 举报
回复
还是楼上说的最实在。
hyg2008 2006-09-24
  • 打赏
  • 举报
回复
to proware(www.liutao.org)
还没看就知道你会用private来说事,如果你真的很需要C++提供的功能,那还是用C++好了。
我只从应用的角度来说,C能做面向对象。
因为系统资源的限制,有时候不益用C++,只好用C来模拟对象。
至于那个private,我认为可有可无,不过是编译器在编译阶段对程序员的限制罢了,
我要想在外部访问它也是可以做到的。
mu_yang 2006-09-24
  • 打赏
  • 举报
回复
大师们对语言的理解是不同的
c的精神是信任程序员
c++则不是
从这个角度讲
如果c的"对象"作不到private
如果不是可以理解的那么至少应该是可以容忍的
hyg2008 2006-09-24
  • 打赏
  • 举报
回复
其实争论这个是没有意义的
一定要有private才叫封装?我看未必!
有时间看看《C语言嵌入式系统编程修炼之道》,关于菜单操作的实现。
其中说到“在这一节里,我们将看到,在C语言中哪怕用到一丁点的面向对象思想,
软件结构将会有何等的改观!”
我们要的只是用在C中利用面向对象的优点,并不是要去替代C++,这也是不可能的!

baidu/google一下"C 面向对象",有一大堆文章,慢慢看吧。

既然我说了是模拟,那只是模拟!肯定有和C++不完全一样的地方,你要挑毛病那可以尽情的挑。
e_ville 2006-09-24
  • 打赏
  • 举报
回复
我大致知道以下几点:
1. 输入输出用:cin和cout,而不是用prinft()和scanf()

2. 申请和释放动态内存用new和delete,而不是用malloc和free

3. 类型转换用static_cast<int>(4.5),而不是用(int)4.5,当然后者现在也可以。

4. 还有头文件:C++里用<ctime>,<cstdlib>,<cstring>,<cstdarg>,<cstdio>等等来代替C里面的<time.h>,<stdlib.h>,<string.h>,<stdarg.h>,<stdio.h>,反正就是C里面的头文件前面加个字母c,同时不要扩展名,并且放到名空间std中。

5. 暂时没想到
mu_yang 2006-09-24
  • 打赏
  • 举报
回复
面向对象,是一种编程思想
面向过程,是另一种编程思想
这只是在源代码的层次上
但在机器码的层面
我认为两者没有本质的区别
只不过前者的实现比较困难
需要编译器多做些事情罢了
JianGeYa 2006-09-24
  • 打赏
  • 举报
回复
看一遍C++的书,然后照着编点,一下就会了,至少形式上,这里的人没人说得全,估计
Bjarne Stroustrup也不一定行
飞哥 2006-09-24
  • 打赏
  • 举报
回复
C面向对象? 是说用结构体封装方法????
这个不妥,似乎C编译器也不支持

值类型与引用类型

  结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,通过使用结构可以创建更多的值类型

  类是引用类型:引用类型在堆上分配地址

不过还有有类的C,另说
proware 2006-09-24
  • 打赏
  • 举报
回复
to hyg2008(蓝色雨)

哈哈。。。

我认为要写面向对象的程序,首先要封装吧,而封装需要把一些属性私有化吧,怎么会说private可有可无呢。。那封装了还有什么意义呢?随便是个函数就能访问对象的私有东西。。


xeonfeng 2006-09-24
  • 打赏
  • 举报
回复
C++应该是兼容C的,我主要是想知道其区别?
把一个C写的代码改写成C++的代码,主要想知道改那些地方能表现出C++的独有特性?!
liuhelin 2006-09-24
  • 打赏
  • 举报
回复
楼主问的好,c的程序语法上也可不需要改变直接在c++下用啊,不过c++和c还是有本质区别啊
加载更多回复(25)

64,654

社区成员

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

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