摘要: 关键点一:将虚函数定义为private然后用一个非虚函数来包装它 1 class GameCharacter{ 2 public: 3 int healthValue()const{ 4 ... 5 int retVal = doHealthValue(); 6 ... 7 return retVa 阅读全文
posted @ 2020-06-11 20:56 熊鑫xxx1x 阅读(162) 评论(0) 推荐(0)
摘要: 纯虚函数能够定义函数体的应用: 1 class Airplane{ 2 public: 3 virtual void fly(const Airport& destination) = 0; 4 }; 5 void Airplane::fly(const Airport& destination){ 阅读全文
posted @ 2020-06-11 19:39 熊鑫xxx1x 阅读(191) 评论(0) 推荐(0)
摘要: 例程: 1 class base{ 2 private: 3 int x; 4 public: 5 virtual void mf1() = 0; 6 virtual void mf1(int); 7 virtual void mf2(); 8 void mf3(); 9 void mf3(doub 阅读全文
posted @ 2020-06-11 19:06 熊鑫xxx1x 阅读(371) 评论(0) 推荐(0)
摘要: 关键概念一:代码膨胀 在使用模板函数的时候可能会因为实例化出过多的版本而出现代码冗余的现象。 实例: 1 template <typename T, std::size_t n> 2 class SquareMatrix{ 3 public: 4 ... 5 void invert(); //求逆矩 阅读全文
posted @ 2020-06-11 16:45 熊鑫xxx1x 阅读(216) 评论(0) 推荐(0)
摘要: 例程: 1 //针对每一个公司创建一个类 2 //该类包含发送铭文和密文的两个功能函数 3 class comA{ 4 public: 5 ... 6 void sendCleartext(const std::string& msg); 7 void sendEncrypted(const std 阅读全文
posted @ 2020-06-11 15:25 熊鑫xxx1x 阅读(287) 评论(0) 推荐(0)
摘要: 例程: 1 template<typename T> 2 void doprocessing(T& w){ 3 if (w.size() > 10 && w != someNastyWidget){ 4 ... 5 } 6 } T必须支持size成员函数,当然这个成员函数也可能是从base clas 阅读全文
posted @ 2020-06-11 12:53 熊鑫xxx1x 阅读(172) 评论(0) 推荐(0)
摘要: 规则:如果一个带额外参数的operator new没有“带相同参数”的对应版operator delete,那么就当new的内存分配动作取消并恢复原样时就没有任何operator delete被调用,于是产生内存泄露。 例程: 1 class Wigget{ 2 public: 3 int a; 4 阅读全文
posted @ 2020-06-11 12:19 熊鑫xxx1x 阅读(210) 评论(0) 推荐(0)
摘要: 既然是规则那就重点研究一下是什么规则: 例程: 1 void* operator new(std::size_t size) throw(std::bad_alloc){ 2 using namespace std; 3 if (size == 0) 4 size = 1; 5 while (tru 阅读全文
posted @ 2020-06-09 15:13 熊鑫xxx1x 阅读(176) 评论(0) 推荐(0)
摘要: 恢复内容开始 这个代码来自effictive c++ 249页,用来在申请内存的时候在内存的前后两端加入标志,这样在发生访问越界的时候便于检查。 之所以要写这段代码是因为我觉得这段代码里面我觉得比较稀奇的地方。 1 //重载operator new使得在分配内存的时候 在前后两端加入标志位 2 cl 阅读全文
posted @ 2020-06-08 14:19 熊鑫xxx1x 阅读(344) 评论(0) 推荐(0)
摘要: 本节主要讲了new分配内存失败的情况下会发生干什么。 本节的主要一些名词: std::new-handler:一个函数指针类型 std::set_new_handler:一个函数用于设置当前的异常处理程序,返回前一个异常处理程序的指针 有定义如下: namespace std { typedef v 阅读全文
posted @ 2020-06-06 10:03 熊鑫xxx1x 阅读(460) 评论(0) 推荐(0)