C++;可以';不能用C实现吗? 我已经知道C++是C的超级集合,通过创建对象提供实时的实现。此外,C++是面向对象的,因为它丰富了面向对象的概念。p> 什么是C++中所有不能在C?< /P >中实现的概念? 有人说我们不能在C语言中过度编写方法,那么我们怎么能拥有不同风格的printf()? 例如printf(“sachin”)将打印sachin和printf(“%d,%s”,计数,名称)将打印1,sachin假设count是一个整数,其值为1,name是一个字符数组,初始化为“sachin” 有些人说数据抽象是用C++实现的,那么结构如何?
C标准库中只有一个C++;可以';不能用C实现吗? 我已经知道C++是C的超级集合,通过创建对象提供实时的实现。此外,C++是面向对象的,因为它丰富了面向对象的概念。p> 什么是C++中所有不能在C?< /P >中实现的概念? 有人说我们不能在C语言中过度编写方法,那么我们怎么能拥有不同风格的printf()? 例如printf(“sachin”)将打印sachin和printf(“%d,%s”,计数,名称)将打印1,sachin假设count是一个整数,其值为1,name是一个字符数组,初始化为“sachin” 有些人说数据抽象是用C++实现的,那么结构如何?,c++,c,C++,C,C标准库中只有一个printf()。其他变体通过更改名称来实现,例如sprintf(),fprintf()等等 结构不能隐藏实现,C中没有private数据。当然,您可以通过不显示指针指向的内容来隐藏数据,就像标准库对FILE*所做的那样。因此有数据抽象,但不是作为struct构造的直接特征 而且,不能在C中重载运算符,因此a+b总是意味着某种加法正在发生。在C++中,根据所涉及的对象的类型,任何事情都可能发生。 注意,这意味着(微妙地)C中的+实际上被覆盖int+int与float+int不同
printf()
。其他变体通过更改名称来实现,例如sprintf()
,fprintf()
等等
private
数据。当然,您可以通过不显示指针指向的内容来隐藏数据,就像标准库对FILE*所做的那样。因此有数据抽象,但不是作为struct
构造的直接特征a+b
总是意味着某种加法正在发生。在C++中,根据所涉及的对象的类型,任何事情都可能发生。
注意,这意味着(微妙地)C中的
+
实际上被覆盖<例如,code>int+int
与float+int
不同。但是你不能做那种重写,这只是编译器的一个问题。 不应该有太多的东西,因为早期C++编译器确实从C++源代码中产生C源代码。基本上,您可以在汇编程序中完成所有操作,但不想这样做。printf使用的是可变长度参数列表,而不是重载版本的函数
C结构没有构造函数,并且无法从其他结构继承它们只是一种方便的方法来处理分组变量
C不是OO语言,也没有OO语言的任何特征
曾说过,你可以用C代码模拟C++功能,但是,C++在编译时将为你做所有的工作
UL>所有其他都是“容易”伪造的:
< p>嗯,如果你不打算用C++实现C++编译器,你可以用C++做成千上万的事情,但不能用C来做。- C++有类。类具有构造函数和析构函数,它们在初始化或描述对象(超出范围或使用delete关键字)时自动调用代码
- 类定义层次结构。您可以扩展一个类。(遗产)
- C++支持多态性。这意味着您可以定义虚拟方法。编译器将根据对象的类型选择要调用的方法
- C++支持运行时信息
虽然你可以在C中模仿上面的大部分内容,但是你需要依靠约定并手动完成工作,而C++编译器则为你做这项工作。p> 和如何。
一个与OOP无关的功能是,如果正确使用,它可以成为真正的击键保护程序。函数重载 什么是C++中的所有概念 这不能在C中实现吗 <>这是一个奇怪的问题,因为任何C++中可以表达的概念都可以用C语言来表达。即使是C++的功能,也可以用各种各样的反人类犯罪来实现。 真正的区别可以归结为两件事:编译器同意执行什么,以及语言提供了什么样的语法便利关于编译器执行,在C++中,编译器将不允许您直接从类或类的朋友外部访问私有数据成员。在C语言中,编译器不会强制执行这一点;您将不得不依赖API文档来区分“私有”数据和“公共可访问”数据
和语法方便性,C++提供了C中没有找到的各种便利,例如运算符重载、引用、自动对象初始化和破坏(构造函数/析构函数的形式)、异常和自动堆栈解卷、对多态性的内置支持等。
基本上,C++中所表达的任何概念都可以用C表示;这只是一个问题,编译器将在多大程度上帮助您表达某个概念,以及编译器提供了多大的语法便利性。由于C++是一种新的语言,它比C中的发音和口哨都要多,因此使得某些概念的表达更容易。 < P>这里的一些回答者认为,用C++代码产生的大多数东西也可以用C来产生,并有足够的抱负。这在某些部分是正确的,但有些事情本质上是不可能实现的,除非您修改C编译器以偏离标准 可伪造:
- (指向子结构中父结构的指针)
- 多态性(使用一组函数指针伪造vtable)
- 数据封装(不透明的子结构,其实现未在公共接口中公开)
- (也可以称为预处理器步骤2)
- 通过参数(一些人试图用省略号来模仿这一点,但从未真正接近)
- (构造函数和析构函数在C++中自动调用,因此在它们的范围内安全地处理堆栈资源)
- (在C语言中,你几乎可以施放任何东西)