上一页 1 ··· 43 44 45 46 47 48 49 50 51 ··· 58 下一页
  2013年10月14日
摘要: 1、方法包括方法名,返回类型,形参表,修饰符。2、对于一个方法,const可以出现的地方有返回类型,形参表,和方法后(const成员方法)。3、返回类型的常量性(是否为const)不同,不能构成过载。为什么? 过载是编译时多态,也就是说,在编译的时候,已经确定下来调用哪个方法。对于又返回类型的方法,调用的时候,可能不处理返回值,这样的话,编译器就不知道该调用哪个方法了。4、我们知道,形参表不同可以构成过载。如果形参表相同,只是形参的常量性不同,能否构成过载? 形参为引用或者指针,可以构成过载,否则不能构成过载。为什么? 过载是编译时多态,必须在编译时确定调用哪个方法。 如果形参为引用或... 阅读全文
posted @ 2013-10-14 20:42 Andy Niu 阅读(281) 评论(0) 推荐(0)
摘要: 1、#define:预编译指令,在预编译的时候,进行文本替换。2、typedef:编译时处理,为类型取一个别名。3、#define与typedef的顺序是相反的,记住typedef就行了。typedef为类型取一个别名,前面是真名,后面才是别名。4、避免使用#define,因为#define只是简单的文本替换,替换后,会出现优先级,以及组合成其他的词,不可预知。 阅读全文
posted @ 2013-10-14 16:40 Andy Niu 阅读(161) 评论(0) 推荐(0)
摘要: 在编写程序的时候,要避免“垃圾进,垃圾出”,解决的办法是:1、垃圾不准进2、垃圾进来,给出提示信息,并且设置一个合适的默认值。结合实际项目谈谈。在项目中,需要解析一个数据文件,这个数据文件是程序自动生成的。人工修改数据文件,设置无效或者错误的信息,这种情况太多,比如属性长度设置为string,或者负数。在解析数据文件的时候,对每一个属性的每一种错误情况,都要进行考虑,并且给出详细的错误说明,很难做到。就算做到了,也是很差劲的设计。因为,程序中充斥着大量这样的代码:判断有效性,给出错误提示,这样就掩盖了真正要做的重要事情。也就是说,垃圾进来,给出提示信息,不合适。那么怎么办呢?对于这种情况,人工 阅读全文
posted @ 2013-10-14 12:00 Andy Niu 阅读(912) 评论(0) 推荐(0)
  2013年10月13日
摘要: 一步一步讲起:1、C++程序生成可执行文件的过程:源文件(.cpp),经过预编译,生成编译单元;编译单元,经过编译,生成目标文件(.obj);目标文件,经过连接,生成可执行文件。2、预编译做的事情:对#include,#define进行文本替换。3、C++支持单独编译,也就是对每个编译单元进行单独编译。这就要求,编译单元是一个自包含的文件,也就是说,编译单元生成目标文件的时候,不需要其他的信息。因此,在编译单元内部,所有使用的东西,必须要有定义,或者有声明。定义的意思是:这个东西就放在这里,当然可以使用。声明的意思是:我有这个东西,但是这个东西放在其他地方,这样的话,就可以使用声明的东西了。4 阅读全文
posted @ 2013-10-13 09:33 Andy Niu 阅读(1816) 评论(0) 推荐(1)
  2013年10月12日
摘要: 经常打篮球,谈谈打篮球的心得。从程序员的角度,分析if(){做什么}else(){做什么}1、队友持球,我该怎么做? a、投篮准,跑出一个空位,示意队友把球传过来,然后投篮。 b、篮下有空档,空切篮下,接队友传球上篮。 c、为队友作掩护,队友进攻手段有:直接投篮,通过掩护摆脱防守队员上篮。当然这时候,我也可以掩护后跑开,队友把球传给我,我来进攻。2、自己持球,该怎么做? 运球时,不要低头,眼观球场上队友和对手的位置。一旦发现队友有好的机会,立即把球传过去。 主动寻找掩护,自己进攻。 注意:切记不能做这样的人:队友有好的机会,自己没有机会,还不肯传球,或者强行投篮。这种人很伤队友的心... 阅读全文
posted @ 2013-10-12 18:50 Andy Niu 阅读(340) 评论(0) 推荐(0)
摘要: 1、构造方法的作用是设置数据成员的初始值。2、定义一个类Person的实例person的时候,必定会调用Person的构造方法。调用构造方法分为两个步骤:第一步使用初始化列表,第二步在构造方法内部对成员赋值。3、对于初始化列表,肯定会执行。如果用户没有显式的调用,就会隐式的调用。然后才执行第二步,在构造方法内部赋值。4、对于初始化列表,对于隐式或者显式中没有初始化的成员,成员的取值取决于下面的情况: a、如果成员是类类型,使用默认构造方法。(注:对于这种情况,必须保证成员具有默认构造方法) b、如果是内置类型,分为下面两种情况: b1、person是全局变量,初始化为0 b2、... 阅读全文
posted @ 2013-10-12 16:57 Andy Niu 阅读(890) 评论(0) 推荐(0)
摘要: 1、反斜杠 a、转义字符 b、强制换行,当一行代码很长时,在这一行中间加上反斜杠,分成两行,反斜杠前后不能有空格。在预编译的的时候,会合成一行。2、String^ 表明String是一个托管类型的指针,不需要人工释放,GC会做这件事。3、调用方法的时候在方法前加上(void) 编码规范往往要求:方法的返回值必须被处理。如果没有被处理,静态检查工具,会给出警告。通过在调用方法时在前面加上(void),明确告诉静态检查工具,不是我忘了处理方法的返回值,而是确实不需要处理方法的返回值。这里其实包括了,a、方法没有返回值,b、我就是不想处理方法的返回值。 阅读全文
posted @ 2013-10-12 16:27 Andy Niu 阅读(441) 评论(0) 推荐(0)
摘要: Antlr与Regex都是文本分析工具。Antlr内部分为词法(Lexer)和语法(Parser),在Antlr中,变量第一个字符大写表示词法,变量第一个字符小写表示语法。词法表示哪些是有效的词,语法表示有效的词怎么样组合才是有效的,延伸一点就是语义,语义表示描述的内容是否正确,涉及到人工智能。Antlr明确表明了哪些是词法,哪些是语法。Regex好像把词法语法合在了一起,可以认为每一个小块是一个词法,这些小块的顺序组合是语法。 阅读全文
posted @ 2013-10-12 16:20 Andy Niu 阅读(393) 评论(0) 推荐(0)
摘要: 1、c_str() 是string的一个方法,返回指向const char的指针,该指针不能修改指向的内容。2、为什么要用c_str()?因为有些地方需要用char指针,比如以char指针作为形参的方法。3、为什么可以用文本常量的字符串赋值给char指针,却不能用字符串变量赋值给char指针?1 char * cp1 = "hello"; // OK2 3 string str = "hello";4 5 cp1 = str; // Error,无法从“std::string”转换为“char *”View Code 文本常量字符串赋值给char指针,做 阅读全文
posted @ 2013-10-12 16:00 Andy Niu 阅读(579) 评论(0) 推荐(0)
  2013年10月11日
摘要: 1、为什么要使用友元?面向对象的4个特征:继承,封装,多态,抽象。对于封装,也就是类的私有成员只有成员方法才可以访问。但是某种情况下,其他方法迫切需要访问类的私有成员,为了解决这个问题,C++开了一个窗户,通过定义方法为友元方法可以访问类的私有成员。2、友元方法不是当前类的成员方法,但是可以访问当前类的私有成员。3、如何使用?在一个类中,声明一个方法为它的友元方法,这个方法可以是普通方法,也可以是其他类的成员方法。4、延伸--友元类在一个类A中,声明一个方法Func为类A的友元方法,则Func可以访问类A的私有成员。那么,在一个类A中,声明类B为类A的友元类,则类B就可以访问类A的私有成员。 阅读全文
posted @ 2013-10-11 20:41 Andy Niu 阅读(366) 评论(0) 推荐(0)
上一页 1 ··· 43 44 45 46 47 48 49 50 51 ··· 58 下一页