C++
黑默丁格
成长
展开
-
Adapter
#include<iostream> #include<string> class MediaPlayer{ public: virtual void play(const std::string& type) = 0; }; class AdvancedPlayer{ public: virtual void playMP4()const = 0; virtual void playVLC()const = 0; }; class MP...原创 2020-12-10 23:08:41 · 112 阅读 · 0 评论 -
模板特化
模板特化只能在同一命名空间中进行,可以特化类模板,也可以特化函数模板。但函数模板只能全特化,类模板可以全特化,也可以偏特化。 全特化 //类模板全特化 template<typename T, typename U> class Base{ public: T t; U u; void show()const { std::cout << t << std::endl; std::cout <&l原创 2020-12-09 15:49:33 · 262 阅读 · 0 评论 -
Prototype
#include<iostream> #include<string> #include<unordered_map> using namespace std; class Shape{ protected: string m_name; public: Shape(const string& s="shape") : m_name(s){ } virtual ~Shape() { } virtual Shape* clon...原创 2020-12-09 00:02:27 · 78 阅读 · 0 评论 -
C++之引用形参
把函数不会改变的形参定义成普通的引用是一种比较常见的错误,这么做会带给函数调用者一种误导,即函数可以修改形参的值。此外,使用引用而非常量引用也会极大的限制函数所能接受的实参类型。我们不能把const对象,字面值或者需要类型转换的对象传递给普通的引用形参。因此应尽量使用常量引用形参。 #include <iostream> #include <string> #inclu...原创 2019-05-02 11:49:44 · 7479 阅读 · 0 评论 -
C++顶层const与底层const
在C++中,顶层const是指const作用于对象本身,可以表示任意对象是常量;而底层const是指指针或引用等复合类型所指的对象是一个常量。 指针类型既可以是顶层const,也可以是底层const;而引用只能是底层const。 const int a = 1; //顶层const int b = 2; const int c = 3; int *const p1 = &b; ...原创 2019-05-02 12:10:10 · 244 阅读 · 0 评论