随笔分类 -  C++

摘要:C++四种强制类型转换的方法以及其应用场合,之前有看过这个知识点,但是,面试的时候怎么想也就没有写的很全面,于是,这里整理一下: C++中的四种强制类型转换除了具有C语言强制类型转换的功能外,还可提供更好的控制强制转换的过程;能更清晰地表明程序员的意图,程序员只有看到这样的代码,立即就能知道一个强制类型转换的目的。 C风格的强制类型转换(TypeCast)很简单,不管什么类型的转换统统是:TYPEb=(TYPE)a,而C++风格的类型转换提供了四种类型转换操作符来对应不同的场景,使用格式是:TYPEb=强制转换类型符(a)。 const_cast常用于去掉类型的const或volalit... 阅读全文

posted @ 2013-07-07 16:19 davy2013 阅读(281) 评论(0) 推荐(0) |

摘要:从源程序到目标文件的生成过程最简单的编译命令是gcc helloworld.c,它包含了以下几个步骤:预处理、编译、汇编、链接,下面分别简介。预处理:处理#define宏定义、#if #ifdef等条件编译指令、#include预编译指令,删除注释,添加行号和文件名标识,保留所有的#pargma编译器指令,经过预编译后的文件为.i文件。预编译命令为:gcc -E hello.c -o hello.i或者cpp hello.c > hello.i编译:把预处理完得文件进行一系列的词法分析、语法分析、语意分析及优化后产生的汇编代码文件。编译命令为gcc -S hello.i -o hello 阅读全文

posted @ 2013-07-06 22:30 davy2013 阅读(1898) 评论(0) 推荐(0) |

摘要:1.1 基本概念 断言是一种让错误在运行时候自我暴露的简单有效实用的技术。它们帮助你较早较轻易地发现错误,使得整个调试过程效率更高。 断言是布尔调试语句,用来检测在程序正常运行的时候某一个条件的值是否总为真,它能让错误在运行时刻暴露在程序员面前。使用断言的最大好处在于,能在更解决错误的发源地的地方发现错误。断言具有以下特征:n 断言是用来发现运行时刻错误的,发现的错误是关于程序实现方面的。n 断言中的布尔表达式显示的是某个对象或者状态的有效性而不是正确性。n 断言在条件编译后只存在于调试版本中,而不是发布版本里。n 断言不能包含程序代码。n 断言是为了给程序员而不是用户提供信息。 使用断言最根 阅读全文

posted @ 2013-07-06 21:44 davy2013 阅读(616) 评论(0) 推荐(1) |

摘要:Linux 下调试远没有windows下的VS方便,不管是VC++6还是VS2003,2005,2008,2010,2012.VS2012自动格式化代码 Ctrl+K+DVS下调试一定要注意尽量不要用F11,要用F10!不然需要引入库文件,提示的警告信息可以“忽略”即可所以我觉得不妨用VS调试程序,可以用VS来研究C语言似乎是一个比较不错的主意,当你的C已经很好的时候可以直接在Linux下去手写代码了。当然windows下写的C程序放到Linux下运行,也是可以的,不过需要知道的是有些语法Windows下支持但是Linux下是不支持。还有时会有乱码,需要注意!注意!其实微软是希望用C++的,所 阅读全文

posted @ 2013-06-24 08:29 davy2013 阅读(309) 评论(0) 推荐(0) |

摘要:Static在C语言里面有两个作用,第一个是修饰变量,第二个是修饰函数。1、Static修饰变量按照作用范围的不同,变量分为局部变量和全局变量。如果用static修饰变量,不论这个变量是全局的还是局部的都是存储在静态数据区。下面分开来讲:¨ 如果用static修饰全局变量,我们称其为静态全局变量。我们用static修饰全局变量的主要目的就是:使得其作用域仅限于变量被定义的文件中(即从变量定义处到本文件结尾处),其它文件不论通过什么方式都不能访问。¨ 如果用static修饰局部变量,我们称其为静态局部变量。我们用static修饰局部变量的目的主要有两个:1) 在某个函数体里面 阅读全文

posted @ 2013-06-22 16:34 davy2013 阅读(230) 评论(0) 推荐(0) |

摘要:1.[Effective C++原则07]:为多态基类声明virtual 析构函数。[如果不]: 如果不声明为析构函数,可能出现的结果如下:Derived对象的成分没有被销毁,形成资源泄露、在调试上会浪费很长时间。classCSimpleClass{public:CSimpleClass(){cout<<"CSimpleClass"<<endl;}~CSimpleClass(){cout<<"~CSimpleClass"<<endl;}private:};classCDerived:publicCSimpl 阅读全文

posted @ 2013-06-21 20:48 davy2013 阅读(251) 评论(0) 推荐(0) |

摘要:东软2012-11月笔试题<SPANstyle="FONT-SIZE:14px">classSample{intx;public:Sample(inta){x=a;cout<<"constructingobject:x="<<x<<endl;}};voidfunc(intn){staticSampleobj(n);}intmain(){func(1);func(10);//1 return0;}</SPAN> [分析]:题目的考查点,静态对象的创建及执行。类中的静态对象只会执行一次,这是输出上面 阅读全文

posted @ 2013-06-21 19:59 davy2013 阅读(220) 评论(0) 推荐(0) |

摘要:C++中的四种强制类型转换除了具有C语言强制类型转换的功能外,还可提供更好的控制强制转换的过程;能更清晰地表明程序员的意图,程序员只有看到这样的代码,立即就能知道一个强制类型转换的目的。C风格的强制类型转换(TypeCast)很简单,不管什么类型的转换统统是:TYPEb=(TYPE)a,而C++风格的类型转换提供了四种类型转换操作符来对应不同的场景,使用格式是:TYPEb=强制转换类型符<TYPE>(a)。Const_cast常用于去掉类型的const或volalitle属性,只能用于指针和引用的,无法对变量进行使用,以便对const变量进行赋值等操作。Dynamic_cast能够 阅读全文

posted @ 2013-06-20 23:14 davy2013 阅读(294) 评论(0) 推荐(0) |

摘要:volatile 是易变的、不稳定的意思。很多人根本就没见过这个关键字,不知道它的存在。也有很多程序员知道它的存在,但从来没用过它。我对它有种“杨家有女初长成,养在深闺人未识” 的感觉。volatile 关键字和const 一样是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。先看看下面的例子:int i=10;int j = i;//(1)语句int k = i;//(2)语句这时候编译器对代码进行优化,因为在(1)、(2)两条语句中,i 没 阅读全文

posted @ 2013-06-20 21:46 davy2013 阅读(192) 评论(0) 推荐(1) |

摘要:第一:private, public, protected 访问标号的访问范围。private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类的对象访问。public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员函数。第二:类的继承后方法属性变化。private 属性不能够被继承。使用private继承,父类的prot 阅读全文

posted @ 2013-06-20 21:32 davy2013 阅读(1570) 评论(0) 推荐(1) |

摘要:重载(overload):必须在一个域中,函数名称相同但是函数参数不同,重载的作用就是同一个函数有不同的行为,因此不是在一个域中的函数是无法构成重载的,这个是重载的重要特征覆盖(override):覆盖指的是派生类的虚拟函数覆盖了基类的同名且参数相同的函数,既然是和虚拟函数挂钩,说明了这个是一个多态支持的特性,所谓的覆盖指的是用基类对象的指针或者引用时访问虚拟函数的时候会根据实际的类型决定所调用的函数,因此此时派生类的成员函数可以"覆盖"掉基类的成员函数.注意唯有同名且参数相同还有带有virtual关键字并且分别在派生类和基类的函数才能构成虚拟函数,这个也是派生类的重要特征 阅读全文

posted @ 2013-06-18 21:04 davy2013 阅读(182) 评论(0) 推荐(0) |

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3