摘要:
函数模板 当我们想要定义一个可以支持泛型的函数时,就要采用函数模板的方式了。所谓泛型就是可以支持多种类型的操作,比如我们定义一个compare操作,他可以根据传递给他的参数类型动态调用对应的函数版本,实现多种类型的比较。 template <typename T> int compare(const 阅读全文
摘要:
C++ 特性 C++ 三大特性,封装继承多态。我们先实现一个Quote作为基类 class Quote { public: Quote() = default; Quote(const std::string &book, double sales_price) { price = sales_pr 阅读全文
摘要:
lambda表达式 lambda表达式又称为匿名表达式,是C11提出的新语法。[]存储lambda表达式要捕获的值,()内的参数为形参,可供外部调用传值。lambda表达式可以直接调用 // 1 匿名调用 [](string name) { cout << "this is anonymous" < 阅读全文
摘要:
本文介绍了C++ 运算符重载的用法,以我们构造的string类为例子,说明重载的用法。 构造我们自己的string类 声明如下 class mystring_ { public: mystring_(/* args */); mystring_(const mystring_ &mstr); mys 阅读全文
摘要:
本文介绍C++单例模式的集中实现方式,以及利弊 局部静态变量方式 //通过静态成员变量实现单例 //懒汉式 class Single2 { private: Single2() { } Single2(const Single2 &) = delete; Single2 &operator=(con 阅读全文
摘要:
问题描述 有一个连续的int数组,数组中的数据升序排序,数组中的数据不唯一,有重复数据,要求在数组中查找指定值为target的数据,返回target最小的下标,如果找到返回其最小的下标,如果没有找到,返回-1, 要求用 用二分查找的方式解决上述问题, 要求时间复杂度为Olog(n),空间复杂度为O( 阅读全文
摘要:
这篇文章讲解C++ 面试常问的几个问题。本文通过demo讲解初始化列表,继承,字符串等常问问题。看下边这个例子 初始化列表 //基类 class Base { public: Base() : m_nbase(0), m_nbase2(m_nbase + 100) {} Base(int n) : 阅读全文
摘要:
右值与右值引用 不能修改的值就是右值,右值一般为临时变量。常见的右值有字面常量值,返回右值的表达式。 所谓右值引用就是必须绑定到右值的引用。我们通过&&来获得右值引用。 右值引用有一个重要的性质——只能绑定到一个将要销毁的对象。 因此,我们可以自由地将一个右值引用的资源“移动”到另一个对象中。 vo 阅读全文
摘要:
动态内存管理 之前我们讲述过动态内存的开辟,可以通过new, malloc,以及alloc等方式,本文通过介绍alloc方式,构造一个StrVec类,这个类的功能类似于一个vector,实现字符串的管理,其中包含push一个字符串,动态扩容,析构,回收内存等操作。 StrVec类实现细节 StrVe 阅读全文
摘要:
拷贝控制 有时候我们需要两个类对象互相关联,当其中一个对象修改后也要关联修改另一个,用这个例子说明拷贝控制的案例。我们有两个类,Message类表示信息类,Folder类表示文件夹类,Message类里有成员folders表示其所属于哪些文件夹。Folder类有成员messages表示其包含哪些me 阅读全文