摘要: 先给出文字说明,然后再给出代码解释: 如果我们决定改写基类所提供的虚拟函数,那么派生类所提供的新定义,其函数型别必须完全符合基类所声明的函数原型,包括:参数列、返回型别、常量性(const-ness)。 下面给出程序说明:基类num_sequence中声明虚拟函数what_am_i(),派生类中改写该函数。 1、正确的写法 1.1 基类的声明1 #pragma once2 3 class num_sequence4 {5 public:6 num_sequence(void);7 virtual const char* what_am_i() const { ret... 阅读全文
posted @ 2012-03-20 11:41 ziyoudefeng 阅读(9709) 评论(14) 推荐(1) 编辑
摘要: 之前也知道引用和指针的区别,但如果现在让我说他们两个有什么区别,我还是不太能全部说出来,(红色标记一下:引用和指针的异同有哪些?)之所以不能说出他两的区别,不是因为我记忆力不好,而是没有过实际代码的体验。在看Essential C++时,碰到下面的代码,感觉能够说明一些他两的用法。下面给出代码和书上的说明:首先说明一下这里基类num_sequence和子类Fibonacci的目的。基类是一系列不同类型数列的抽象,比如斐波那契数列等等(这里仅以Fibonacci来举例说明子类)。先给出第一次设计基类和子类的代码:(第一次设计时基类不保存具体的数列Vector,只是一些子类抽象出来的函数)1 .. 阅读全文
posted @ 2012-03-20 10:42 ziyoudefeng 阅读(1261) 评论(1) 推荐(0) 编辑
摘要: OperatorEqual.h 1 #pragma once 2 3 class OperatorEqual 4 { 5 public: 6 OperatorEqual(void); 7 ~OperatorEqual(void); 8 9 public:10 int _index;11 12 public:13 OperatorEqual(int index) : _index(index) {}14 bool operator==(OperatorEqual& rhs);15 };OperatorEqual.cpp 1 #include "StdA... 阅读全文
posted @ 2012-03-19 22:52 ziyoudefeng 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 问题1: 在A.h中 声明了static std::vector<int> _elems; 然后再A.cpp中 再一次忘了 添加 std::vector<int> Fibonacci::_elems; 尽管后来想起来了,但第一次添加时依然写错了代码,写成了std::vector<int> _elems;问题2: 基类num_sequence.cpp中 重载了std::ostream& operator<<( std::ostream &os, const num_sequence &ns ){return ns.print 阅读全文
posted @ 2012-03-19 22:52 ziyoudefeng 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 今天在看Essential C++ 第5章时,看到这句话: 一般而言,在基类和派生类中提供同名的non-virtual函数,并不是好的解决方法。基于此点而归纳出来的结论或许是:基类中的所有函数都应该被声明为virtual。我并不认为这是个正确的结论,但它的确可以马上解决我们所面临的两难困境。 上述作者描述中的红色字体部分,暂时还不知道是什么原因。下面先举个例子说明一下为什么“在基类和派生类中提供同名的non-virtual函数,并不是好的解决方法”。1、Base.h文件:定义了一个display()函数1 class Base2 {3 public:4 Base(void);5 ... 阅读全文
posted @ 2012-03-19 22:50 ziyoudefeng 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 本篇日志是作为菜鸟C++学员,写的一篇调试错误的过程,旨在记录自己的学习过程,帮助自己提高,后面附有我的代码。 今天早上在看Essential C++ P125时,想照着书上的例子写一次,看看运行结果。 结果当我抄书上的代码时,一直从书第四章开头找到了P125,原因是书上是按照函数过程这么讲的,造成我抄完代码也不知所以然,结果当然就是编译不通过了。 第一个问题: 当时第一次出现的错误是LNK2001,好像是这个编号,然后我就试,看是不是这里的问题,改一次编译一次,当然这样是没有结果的。最后我想到了百度,百度以后,得到的结果是声明的变量在另一个文件里面找不到。 也就是说这时候才找到问题... 阅读全文
posted @ 2012-03-19 22:49 ziyoudefeng 阅读(890) 评论(1) 推荐(0) 编辑