我已经读过C++是C的超集,并通过创建对象提供实时实现.此外,C++对现实世界是封闭的,因为它充满了面向对象的概念.
C++中有哪些概念不能在C中实现?
printf()
呢?例如,printf("sachin");
将打印sachin
并printf("%d, %s",count ,name);
打印,1,sachin
假设count是一个整数,其值为1,name是一个初始化的字符数组"sachin"
.sha*_*kin 23
这里的一些响应者认为,使用C++代码可以生成的大多数东西也可以用具有足够野心的C生成.在某些部分中也是如此,但除非您修改C编译器以偏离标准,否则某些事情本身是不可能实现的.
Fakeable:
不可能:
值得一试:
关于RAII的澄清:
当涉及到最重要的方面时,这个概念通常会被误解 - 隐式资源管理,即保证(通常在语言层面)资源得到妥善处理的概念.有些人认为实现RAII可以通过将此责任留给程序员来完成(例如,在goto标签上显式析构函数调用),遗憾的是,这并没有提供RAII作为设计概念的安全原则.
来自维基百科文章的一篇文章,阐明了RAII的这一方面:
"因此,资源需要与合适对象的生命周期联系起来.它们是在初始化期间获取的,当它们在可用之前没有被使用的时候被获取,并且在相同对象被破坏时被释放,这保证会发生.即使出现错误."
printf()
C 标准库中只有一个。其他品种则通过更改名称来实现,例如sprintf()
,fprintf()
等等。
结构不能隐藏实现,C 中没有private
数据。当然,您可以通过不显示例如指针指向的内容来隐藏数据,就像标准库对 FILE * 所做的那样。因此存在数据抽象,但不是构造的直接特征struct
。
另外,您不能在 C 中重载运算符,因此a + b
始终意味着正在发生某种加法。在 C++ 中,根据所涉及对象的类型,任何事情都可能发生。
请注意,这(微妙地)暗示+
在 C 中实际上is
被重写了;与例如int + int
的代码不同。float + int
但你不能自己进行这种覆盖,这只是编译器的事情。
归档时间: |
|
查看次数: |
2048 次 |
最近记录: |