2014年1月23日
摘要: 1、所谓智能指针,就是资源管理类,行为像指针。因为要对不同的类型的指针进行封装,所以智能指针是类模版。2、那么问题来了。对于原始指针,支持隐式类型转换,也就是说,父类指针可以指向子类指针。因此,我们当然期望,父类智能指针可以指向子类智能指针,但是,不同Base和Derived实例化出来的智能指针,是不同的类型,之间没有任何关系,更谈不上继承关系,肯定不能赋值。3、怎么解决呢? 提供一个成员方法模版,对兼容的类型进行构造或者赋值。也就是copy构造模版和copy赋值模版。4、这里出现了一个问题,以copy构造模版为例,当copy构造模版的形参与类模版的形参一致,那么就退化为普通的copy构造,. 阅读全文
posted @ 2014-01-23 19:36 Andy Niu 阅读(444) 评论(0) 推荐(0)
摘要: 原文:http://blog.csdn.net/txgc1009/article/details/6700830许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到strcpy函数从2分到10分解答的例子,看看自己属于什么样的层次。此外,还有一些面试题考查面试者敏捷的思维能力。 分析这些面试题,本身包含很强的趣味性;而作为一名研发人员,通过对这些面试题的深入剖析则可进一步增. 阅读全文
posted @ 2014-01-23 19:08 Andy Niu 阅读(411) 评论(0) 推荐(0)
摘要: 1、假设【24】中的Rational是类模版,同时有non-member的方法模版,现在考虑下面的调用: Rational a(1,2); Rational result = a*2; // Error2、为什么? 调用方法的时候,如果没有完全匹配的方法,编译器会尝试进行隐式类型转换。现在考虑模版的实例化,调用方法的时候,编译器根据模版实参,确定模版形参,然后实例化一个方法。但是,实例化方法的时候,从不进行隐式类型转换。思考为什么?假如考虑隐式类型转换,那么存在隐式类型转换的情况多了,不可能都去实例化。也就是说,模版实例化的时候,不考虑隐式类型转换,因此也就没有实例化方法。没有生成方法,... 阅读全文
posted @ 2014-01-23 18:54 Andy Niu 阅读(319) 评论(0) 推荐(0)
摘要: 1、令class支持隐式类型转换,往往是个糟糕的主意。但有些情况是合理的,比如数值类型。考虑,有理数Rational有分子,分母两个字段,缺省参数值为0,1。Ration a = 2;我们期望构造一个分子为2,分母为1的有理数,这是非常合理和自然的。因此,Rational的构造方法为Ration(int numerator =0, int denominator =1);不添加explicit。2、考虑Rational 有个成员方法 operator*,如下: const Ration operator*(const Rational& rhs) const; Rational a ( 阅读全文
posted @ 2014-01-23 18:33 Andy Niu 阅读(593) 评论(0) 推荐(0)
摘要: 1、网址:http://boost.org2、有很多C++组织和网站,但是Boost库有两个优势:a、和标准委员会关系密切;b、加入C++标准的各种功能的测试场。 阅读全文
posted @ 2014-01-23 17:59 Andy Niu 阅读(154) 评论(0) 推荐(0)
摘要: 1、C++0X,不确定哪一年出来,意指200X版的C++2、C++标准程序库的主要机能有:STL,iostreams,locals等。3、TR1:Technical Report 1,只是一份规范。添加了智能指针,泛型方法指针,正则表达式等内容。 阅读全文
posted @ 2014-01-23 17:55 Andy Niu 阅读(351) 评论(0) 推荐(0)
摘要: 1、严肃对待编译器发出的警告信息,因为编译器作者对所发生的事情有更好的领悟,尽量争取“无任何警告”。2、不要过度依赖编译器的警告,因为不同编译器对待事情的态度不同。 阅读全文
posted @ 2014-01-23 17:49 Andy Niu 阅读(162) 评论(0) 推荐(0)