等需要脚本解释器,.NET需要中间语言转换(这个我不怎么清楚),C++ 需要更多的开销来实现复杂的对
象关系,在很多的低配置的系统里面,只有1K的内存,16K的FLASH,这点资源,不说一个JVM,就连一个
简单的解释器的很难放的下,在这样的环境下,你可以不选择C,但是你能选的就只有汇编了。因此,C虽然
比较繁琐,功能不够强大(就是封装的不够高),没有很多现成的类库或对象支持,但是其用途却是具有不
可替代性。
C++ 需要更多的开销来实现复杂的对象关系
请问各位大哥 这句话怎么解释啊?不是说c
是c++的子集吗?
难道c++实现不了c的这样的效果?
还是这句话是个菜鸟说得?
谢谢了。。。。。。。。
38 个解决方案
#1
看 《深入探索C++对象模型》
#2
你要是能从底层去剖析C++;还怕不能用;
#3
据个例子,c++为了让你能多态,所以他实际虚函数机制时背着你做了一些需要额外开销的事情。
如虚函数表。
当然这样的事情干了很多。
如虚函数表。
当然这样的事情干了很多。
#4
C++ 需要更多的开销来实现复杂的对象关系
=================
看跟什么比,如果同空气比,的确多了virtual指针等。
但是如果用c来实现面向对象,我想综合起来考虑还是c++好些吧。
=================
看跟什么比,如果同空气比,的确多了virtual指针等。
但是如果用c来实现面向对象,我想综合起来考虑还是c++好些吧。
#5
OO不是放之四海而皆准的神物,
一些小型应用,OO不会带来什么好处,
例如门禁考勤机,要OO做什么?
一些小型应用,OO不会带来什么好处,
例如门禁考勤机,要OO做什么?
#6
c拼 c++?
#7
new delete啊,构造函数,指针,内存堆管理,C++很多特性都需要很大的开销吧。我猜的
#8
如果你真的需要那些“关系”,那C语言实现恐怕开销更大。
如果你不真的需要那些“关系”,那C++代码同样不会要你付出什么额外开销。
关键是太多人不知道自己是否真的需要,而是为了C++而C++的。
如果你不真的需要那些“关系”,那C++代码同样不会要你付出什么额外开销。
关键是太多人不知道自己是否真的需要,而是为了C++而C++的。
#9
c++也可以像C一样高效。
不爱用c++的对象,就用泛型呗。比C灵活 效率还高
不爱用c++的对象,就用泛型呗。比C灵活 效率还高
#10
C++ 需要更多的开销来实现复杂的对象关系
-------------------------------------
这句话指的是C++继承、多态等OOP特性的实现需要比较多的代码量。
另外c与c++是交集,不是子集。对于C与C++的不同,想认真写的话,写一本书出来毫不夸张。
-------------------------------------
这句话指的是C++继承、多态等OOP特性的实现需要比较多的代码量。
另外c与c++是交集,不是子集。对于C与C++的不同,想认真写的话,写一本书出来毫不夸张。
#11
#include <stdio.h>
int main()
{
puts("AAA");
}
当C程序编译:
.file "t.c"
.section .rodata
.LC0:
.string "AAA"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $20, %esp
movl $.LC0, (%esp)
call puts
addl $20, %esp
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.ident "GCC: (Debian 4.3.4-6) 4.3.4"
.section .note.GNU-stack,"",@progbits
当作C++编译:
.file "t.c"
.section .rodata
.LC0:
.string "AAA"
.text
.globl main
.type main, @function
main:
.LFB2:
leal 4(%esp), %ecx
.LCFI0:
andl $-16, %esp
pushl -4(%ecx)
.LCFI1:
pushl %ebp
.LCFI2:
movl %esp, %ebp
.LCFI3:
pushl %ecx
.LCFI4:
subl $4, %esp
.LCFI5:
movl $.LC0, (%esp)
call puts
movl $0, %eax
addl $4, %esp
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.LFE2:
.size main, .-main
.section .eh_frame,"a",@progbits
.Lframe1:
.long .LECIE1-.LSCIE1
.LSCIE1:
.long 0x0
.byte 0x1
.globl __gxx_personality_v0
.string "zP"
.uleb128 0x1
.sleb128 -4
.byte 0x8
.uleb128 0x5
.byte 0x0
.long __gxx_personality_v0
.byte 0xc
.uleb128 0x4
.uleb128 0x4
.byte 0x88
.uleb128 0x1
.align 4
.LECIE1:
.LSFDE1:
.long .LEFDE1-.LASFDE1
.LASFDE1:
.long .LASFDE1-.Lframe1
.long .LFB2
.long .LFE2-.LFB2
.uleb128 0x0
.byte 0x4
.long .LCFI0-.LFB2
.byte 0xc
.uleb128 0x1
.uleb128 0x0
.byte 0x9
.uleb128 0x4
.uleb128 0x1
.byte 0x4
.long .LCFI1-.LCFI0
.byte 0xc
.uleb128 0x4
.uleb128 0x4
.byte 0x4
.long .LCFI2-.LCFI1
.byte 0xe
.uleb128 0x8
.byte 0x85
.uleb128 0x2
.byte 0x4
.long .LCFI3-.LCFI2
.byte 0xd
.uleb128 0x5
.byte 0x4
.long .LCFI4-.LCFI3
.byte 0x84
.uleb128 0x3
.align 4
.LEFDE1:
.ident "GCC: (Debian 4.3.4-6) 4.3.4"
.section .note.GNU-stack,"",@progbits
这就是差别
#12
帅哥 这个效率是 运行的效率?不是编程的时间效率吧?
#13
其实我的基础就是花3年时间把c++ primer plus 囫囵吞枣地看一遍 呵呵。。。。。。真不好意思
#14
现在我做UGNX编程。。像这种既要效率,又大型的行业软件。。。我觉得除了c++ 应该没其它语言可以胜任吧?
#15
不要看那些个什么什么虚表啊? 构造析构啊? 他们为什么存在?因为你存要他, C++为什么叫C++。 它是C的扩展。C能做他都能做。 但C++提供了更多的特性,比如多态? 如果有人说多态慢? 那么请问你为什么要用多态? 因为你需要他。 就算用C语言为了实现结构你也要模拟出来一套,还是那句话因为你需要他才存在。没人有说用了G++你就必需用多态。 我说C++和C比没有性能损耗,所谓的性能损耗只是人的选择, 因为你想实现更好的结构, 你要更清晰的好懂的代码。 这些个功能是C做起来很麻的。 所以C++存在了。 有人说:“C++就是没C慢” 你唧唧歪歪个啥? 你不会不用啊? 你用C写啊?
#16
你好~还有那么多人使用c是不是 就是因为c++规范问题啊?
#17
还有那么多人使用C是,因为他们真的不需要C++,比如在一个单片机上搞个控制灯的小程序, 有毕要用C++么?
当然还有别的搞C的,UNIX是最典型的,纯C写的。这些人不是因为C++有什么问题? 要看他们需要什么?
顺便问一句: C++规范有啥问题?
#18
任何C语言程序都是有效的C++程序哦
#19
一个好的C++程序员之比最好的C程序员慢5%
#20
我觉得你说的很对,就是这样的原因
#21
这个说法有问题,用C++编译器编译不过去的C程序很多的,
C++兼容的只是早期的C语言,C语言后来又有自身的发展。
#22
c++自动帮你做的事情多些,自然会多一点点开销,这个正常得很,仅从代码效率来说,是一样的
#23
相对c++在很多地方提供的便利来说,这么一点点效率是可以忽略的。
#24
看 《深入探索C++对象模型》
#25
11楼很强大……
#26
01010010101010101010010101010100000000000000000000000
#27
这句话我得好好体会一下
#28
c++内含一个更严格的c
#29
主要看应用场合吧,偏底层的开发,注重效率,很少改动,用c适合,也可结合一定的汇编;偏应用层的,效率要求稍低,经常改动,用c++、java、c#都行。当然c++也能开发出高效的程式,要看对c++的理解有多深了,在底层方面与c比起来,优势就是扩展性好,可重用性好,但是无论做的多出色,效能上还是要稍逊c一筹。
#30
C++中的C子集与标准C的差异,有可能比不同平台的两个C环境的差异更小!
#31
我建议你看看《提高c++性能的编程技术》
如果为了实现运行时的函数选择,c++需要虚函数表,那么C中 需要 很多case
你觉得谁要方便些。
讨论开销,要在目的一致的情况下吧。还有,不是每个程序都适合OO的。 但是c++ 可以带给你的程序更大的安全性。
#32
怎么又上升到了语言告诉?
#33
请教一下 do_fork~
g++ 在代码后面生成的那一片如同天书的数据是干什么用的啊?
好像 64 位环境下面无论是 C 还是 C++ 编译结果都有这个东西了,看不懂……
g++ 在代码后面生成的那一片如同天书的数据是干什么用的啊?
好像 64 位环境下面无论是 C 还是 C++ 编译结果都有这个东西了,看不懂……
#34
这个不对了吧?
#35
good!!!!!!!!!!!!!!!!
#36
>> 现在很少有高级语言能做到C的效率的,这就是C长青的基本保障。
把效率问题归结到语言上,是一些可耻的教科书不负责任的说法.
把效率问题归结到语言上,是一些可耻的教科书不负责任的说法.
#37
。。。3年,好夸张
#38
请问这个更严格的c与c比较一下是怎么样的结果呢? 谢谢!!!!!!!!!!!
#1
看 《深入探索C++对象模型》
#2
你要是能从底层去剖析C++;还怕不能用;
#3
据个例子,c++为了让你能多态,所以他实际虚函数机制时背着你做了一些需要额外开销的事情。
如虚函数表。
当然这样的事情干了很多。
如虚函数表。
当然这样的事情干了很多。
#4
C++ 需要更多的开销来实现复杂的对象关系
=================
看跟什么比,如果同空气比,的确多了virtual指针等。
但是如果用c来实现面向对象,我想综合起来考虑还是c++好些吧。
=================
看跟什么比,如果同空气比,的确多了virtual指针等。
但是如果用c来实现面向对象,我想综合起来考虑还是c++好些吧。
#5
OO不是放之四海而皆准的神物,
一些小型应用,OO不会带来什么好处,
例如门禁考勤机,要OO做什么?
一些小型应用,OO不会带来什么好处,
例如门禁考勤机,要OO做什么?
#6
c拼 c++?
#7
new delete啊,构造函数,指针,内存堆管理,C++很多特性都需要很大的开销吧。我猜的
#8
如果你真的需要那些“关系”,那C语言实现恐怕开销更大。
如果你不真的需要那些“关系”,那C++代码同样不会要你付出什么额外开销。
关键是太多人不知道自己是否真的需要,而是为了C++而C++的。
如果你不真的需要那些“关系”,那C++代码同样不会要你付出什么额外开销。
关键是太多人不知道自己是否真的需要,而是为了C++而C++的。
#9
c++也可以像C一样高效。
不爱用c++的对象,就用泛型呗。比C灵活 效率还高
不爱用c++的对象,就用泛型呗。比C灵活 效率还高
#10
C++ 需要更多的开销来实现复杂的对象关系
-------------------------------------
这句话指的是C++继承、多态等OOP特性的实现需要比较多的代码量。
另外c与c++是交集,不是子集。对于C与C++的不同,想认真写的话,写一本书出来毫不夸张。
-------------------------------------
这句话指的是C++继承、多态等OOP特性的实现需要比较多的代码量。
另外c与c++是交集,不是子集。对于C与C++的不同,想认真写的话,写一本书出来毫不夸张。
#11
#include <stdio.h>
int main()
{
puts("AAA");
}
当C程序编译:
.file "t.c"
.section .rodata
.LC0:
.string "AAA"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $20, %esp
movl $.LC0, (%esp)
call puts
addl $20, %esp
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.ident "GCC: (Debian 4.3.4-6) 4.3.4"
.section .note.GNU-stack,"",@progbits
当作C++编译:
.file "t.c"
.section .rodata
.LC0:
.string "AAA"
.text
.globl main
.type main, @function
main:
.LFB2:
leal 4(%esp), %ecx
.LCFI0:
andl $-16, %esp
pushl -4(%ecx)
.LCFI1:
pushl %ebp
.LCFI2:
movl %esp, %ebp
.LCFI3:
pushl %ecx
.LCFI4:
subl $4, %esp
.LCFI5:
movl $.LC0, (%esp)
call puts
movl $0, %eax
addl $4, %esp
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.LFE2:
.size main, .-main
.section .eh_frame,"a",@progbits
.Lframe1:
.long .LECIE1-.LSCIE1
.LSCIE1:
.long 0x0
.byte 0x1
.globl __gxx_personality_v0
.string "zP"
.uleb128 0x1
.sleb128 -4
.byte 0x8
.uleb128 0x5
.byte 0x0
.long __gxx_personality_v0
.byte 0xc
.uleb128 0x4
.uleb128 0x4
.byte 0x88
.uleb128 0x1
.align 4
.LECIE1:
.LSFDE1:
.long .LEFDE1-.LASFDE1
.LASFDE1:
.long .LASFDE1-.Lframe1
.long .LFB2
.long .LFE2-.LFB2
.uleb128 0x0
.byte 0x4
.long .LCFI0-.LFB2
.byte 0xc
.uleb128 0x1
.uleb128 0x0
.byte 0x9
.uleb128 0x4
.uleb128 0x1
.byte 0x4
.long .LCFI1-.LCFI0
.byte 0xc
.uleb128 0x4
.uleb128 0x4
.byte 0x4
.long .LCFI2-.LCFI1
.byte 0xe
.uleb128 0x8
.byte 0x85
.uleb128 0x2
.byte 0x4
.long .LCFI3-.LCFI2
.byte 0xd
.uleb128 0x5
.byte 0x4
.long .LCFI4-.LCFI3
.byte 0x84
.uleb128 0x3
.align 4
.LEFDE1:
.ident "GCC: (Debian 4.3.4-6) 4.3.4"
.section .note.GNU-stack,"",@progbits
这就是差别
#12
帅哥 这个效率是 运行的效率?不是编程的时间效率吧?
#13
其实我的基础就是花3年时间把c++ primer plus 囫囵吞枣地看一遍 呵呵。。。。。。真不好意思
#14
现在我做UGNX编程。。像这种既要效率,又大型的行业软件。。。我觉得除了c++ 应该没其它语言可以胜任吧?
#15
不要看那些个什么什么虚表啊? 构造析构啊? 他们为什么存在?因为你存要他, C++为什么叫C++。 它是C的扩展。C能做他都能做。 但C++提供了更多的特性,比如多态? 如果有人说多态慢? 那么请问你为什么要用多态? 因为你需要他。 就算用C语言为了实现结构你也要模拟出来一套,还是那句话因为你需要他才存在。没人有说用了G++你就必需用多态。 我说C++和C比没有性能损耗,所谓的性能损耗只是人的选择, 因为你想实现更好的结构, 你要更清晰的好懂的代码。 这些个功能是C做起来很麻的。 所以C++存在了。 有人说:“C++就是没C慢” 你唧唧歪歪个啥? 你不会不用啊? 你用C写啊?
#16
你好~还有那么多人使用c是不是 就是因为c++规范问题啊?
#17
还有那么多人使用C是,因为他们真的不需要C++,比如在一个单片机上搞个控制灯的小程序, 有毕要用C++么?
当然还有别的搞C的,UNIX是最典型的,纯C写的。这些人不是因为C++有什么问题? 要看他们需要什么?
顺便问一句: C++规范有啥问题?
#18
任何C语言程序都是有效的C++程序哦
#19
一个好的C++程序员之比最好的C程序员慢5%
#20
我觉得你说的很对,就是这样的原因
#21
这个说法有问题,用C++编译器编译不过去的C程序很多的,
C++兼容的只是早期的C语言,C语言后来又有自身的发展。
#22
c++自动帮你做的事情多些,自然会多一点点开销,这个正常得很,仅从代码效率来说,是一样的
#23
相对c++在很多地方提供的便利来说,这么一点点效率是可以忽略的。
#24
看 《深入探索C++对象模型》
#25
11楼很强大……
#26
01010010101010101010010101010100000000000000000000000
#27
这句话我得好好体会一下
#28
c++内含一个更严格的c
#29
主要看应用场合吧,偏底层的开发,注重效率,很少改动,用c适合,也可结合一定的汇编;偏应用层的,效率要求稍低,经常改动,用c++、java、c#都行。当然c++也能开发出高效的程式,要看对c++的理解有多深了,在底层方面与c比起来,优势就是扩展性好,可重用性好,但是无论做的多出色,效能上还是要稍逊c一筹。
#30
C++中的C子集与标准C的差异,有可能比不同平台的两个C环境的差异更小!
#31
我建议你看看《提高c++性能的编程技术》
如果为了实现运行时的函数选择,c++需要虚函数表,那么C中 需要 很多case
你觉得谁要方便些。
讨论开销,要在目的一致的情况下吧。还有,不是每个程序都适合OO的。 但是c++ 可以带给你的程序更大的安全性。
#32
怎么又上升到了语言告诉?
#33
请教一下 do_fork~
g++ 在代码后面生成的那一片如同天书的数据是干什么用的啊?
好像 64 位环境下面无论是 C 还是 C++ 编译结果都有这个东西了,看不懂……
g++ 在代码后面生成的那一片如同天书的数据是干什么用的啊?
好像 64 位环境下面无论是 C 还是 C++ 编译结果都有这个东西了,看不懂……
#34
这个不对了吧?
#35
good!!!!!!!!!!!!!!!!
#36
>> 现在很少有高级语言能做到C的效率的,这就是C长青的基本保障。
把效率问题归结到语言上,是一些可耻的教科书不负责任的说法.
把效率问题归结到语言上,是一些可耻的教科书不负责任的说法.
#37
。。。3年,好夸张
#38
请问这个更严格的c与c比较一下是怎么样的结果呢? 谢谢!!!!!!!!!!!