![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
fangyi86
这个作者很懒,什么都没留下…
展开
-
C与C++的区别
C是一个结构化语言:C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础转载 2010-10-15 10:18:00 · 594 阅读 · 0 评论 -
C代码优化方案
UML软件工程组织火龙果软件工程技术中心C代码优化方案 2008-11-10 作者:王全明 来源:csdn目录__ 2C代码优化方案__ 41、选择合适的算法和数据结构__ 42、使用尽量小的数据类型__ 53、减少运算的强度__ 5(1)、查表(游戏程序员必修课)_ 5(2)、求余运算__ 6(3)、平方运算__ 6(4)、用移位实现乘除法运算__ 6(5)、避免不必要的整数除法__ 8(6)、使用增量和减量操作符__ 8(7)、使用复合赋值表达式__ 8(8)、提取公共的子表达式__ 94、结构体成转载 2010-11-01 22:20:00 · 1009 阅读 · 0 评论 -
strlen
strlen源码剖析学习高效编程的有效途径之一就是阅读高手写的源代码,CRT(C/C++ Runtime Library)作为底层的函数库,实现必然高效。恰好手中就有glibc和VC的CRT源代码,于是挑了一个相对简单的函数strlen研究了一下,并对各种实现作了简单的效率测试。strlen的函数原形如下: size_t strlen(const char *str);strlen返回str中字符的个数,其中str为一个以'/0'结尾的字符串(a null-terminated string)。1转载 2010-10-23 21:57:00 · 471 阅读 · 0 评论 -
strcpy
char *strcpy(char *strDest,const char *strSrc) { assert((strDest!=NULL)&&(strSrc !=NULL)) //判断指针是否合法,即分配内存,指向某块确定区域 char *address = strDest; //记住目标地址的起始值 while((*strDest++ = *strSrc++)!='/0') ;转载 2010-10-23 21:42:00 · 419 阅读 · 0 评论 -
dynamic_cast同类指针
对于同类指针的cast应该是直接通过,不对指针所指的object进行run time check。int main(){ A *p1 = (A*)0x1; A *p2 = dynamic_cast(p1); return 0;}但是VC6中竟对p1所指的地址进行了检查,这是VC6对ISO C++ standard实现不对的地方,在2003/2005中得到了修正。转载 2010-10-16 23:41:00 · 435 阅读 · 0 评论 -
dynamic_cast
该运算符把expression转换成type-id类型的对象。Type-id必须是类的指针、类的引用或者void *; 如果type-id是类指针类型,那么expression也必须是一个指针,如果type-id是一个引用,那么expression也必须是一个引用。 dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。 在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的; 在进行下行转换时,dynamic_c转载 2010-10-16 23:36:00 · 439 阅读 · 0 评论 -
C,C++,C#,java的区别
简单地说,它们不是一种语言,语法有差别,编程时具体用到的类库或者函数库也不一样。 虽然它们不是一种语言,不过它们却也有所联系。广泛地说,C可以看作其他三种语言的源语言,因为其他三种语言几乎都是从C而来的,无论从数据类型还是控制语句看,其他三种语言都有从C得来的迹象。 其中C++则一般看作是对C语言的扩展。因为C语言没有面向对象的语法结构,而当时业界又迫切需要面向对象的编程特性,所以贝尔实验室的开发者就为C添加了面向对象的结构。现在C++已经不只是C的扩展了,它已经完全可以被看作一种新的编程语言。虽然C的转载 2010-10-15 10:14:00 · 1606 阅读 · 0 评论 -
构造函数调用虚函数
参考stroustrup的回答吧(http://www.research.att.com/~bs/bs_faq2.html#vcall)在构造函数中调用虚成员函数,虽然这是个不很常用的技术,但研究一下可以加深对虚函数机制及对象构造过程的理解。这个问题也和一般直观上的认识有所差异。先看看下面的两个类定义。struct C180{ C180() { foo(); this->foo(); } virtual foo() { cout }};struct C190 : public C180{ C190(转载 2010-10-14 20:27:00 · 493 阅读 · 0 评论 -
C#比C++慢
c#通过底层的虚拟机机制减少了c/c++语言中常常容易发生的内存泄漏和安全性问题,代价是运行速度减慢。同样的由于简化了编程语言的复杂性(c#远远比c++来得简单),大大提高了开发者得效率。另外c#具有.net庞大的类库,这个优势是c++所不具有的。因此c#非常合适开发企业中处理业务的应用程序。转载 2010-10-15 10:27:00 · 1937 阅读 · 2 评论 -
C++中的未定义行为(undefined behavior)
<br />之所以想到这个话题,是前段时间一次讨论中提到的new[]一个简单类型的数组,能否用delete而不是delete[]释放的问题。因为明确说了不是类对象,所以这里可以不考虑数组对象析构时的错误,那么这样做可不可以呢?<br /> 一种声音是:严格遵守C++标准,保持好习惯;另一种声音:不要生搬经典,要自己实践才知道。<br /> 为了弄清这个问题,不得不引入一个词“未定义行为”(undefined behavior)。<br /> In computer science, und转载 2010-11-14 15:39:00 · 7043 阅读 · 0 评论