c++11
帆的孤独啊
这个作者很懒,什么都没留下…
展开
-
c++11 unkown总结
static_cast 类似于c中强制转型 也能把父类型强制转为子类型(不安全 指针不能访问子类型中的函数)在编译时检查dynamic_cast 在运行时会检查 如果转换不合理 对于指针类型会返回NULLclass T{public: virtual void t(){}};class B:public T{public: void fun(){cout<...原创 2019-09-11 20:31:32 · 2007 阅读 · 0 评论 -
typename和class一点点区别
使用typename T::bartype bar 表示使用这一类型namespace test{ /* traits 是为了获取迭代器指向值的类型 在迭代器中放入value_type * traits 是一个只包含类型定义的模板类 * 为了泛化 即使得一般的指针也能使用可以使用类模板的偏特化版本 即针对真指针类型的 * 迭代器视为伪指针类型 实现...原创 2019-09-10 20:47:11 · 289 阅读 · 0 评论 -
c++ const
const是C语言的一种关键字,起受保护,防止以外的变动的作用!可以修饰变量,参数,返回值,甚至函数体。const可以提高程序的健壮性,你只管用到你想用的任何地方。 (一)const修饰参数。const只能修饰输入参数。 1、如果输入参数是指针型的,用const修饰可以防止指针被意外修改。 2、如果参数采用值传递的方式,无需const,因为函数自动产生临时变量复制该参数。 3、非内部数据类型的参...原创 2019-08-31 18:55:17 · 133 阅读 · 0 评论 -
C++ 虚表
每个类有个有自己的虚表 每个对象有个指针__vptr指向自己类的虚表int main(){ B bObject; A *p = & bObject; p->vfunc1();}在调用时 用父类的指针(这样当要指向子类时相当于自动转型) p指向bObject p调用vfunc1 会找bObject所在类的虚表同理:int main()...原创 2019-08-31 16:25:47 · 152 阅读 · 0 评论 -
宏定义的理解
首先: c/c++ 编译可以用gcc 连接要用g++ (gcc 不能调用c++库链接)#include<iostream>using namespace std;int main(){#ifdef DEBUG cout<<"DEBUG"<<endl;#else cout<<"RELEASE"<<endl;#endif...原创 2019-08-26 17:06:54 · 255 阅读 · 0 评论 -
c++ functor用处!!!
某些特殊场景: 函数中包含一些要赋的值 但是函数只能传入一个参数例如使用count_if 来得到长度大于len的字符的个数class ShorterThan { public: explicit ShorterThan(int maxLength) : length(maxLength) {} bool operator() (const str...原创 2019-08-26 16:55:48 · 335 阅读 · 0 评论 -
右值引用和move
c++ 中变量赋值是值赋值的eg:int i = 5;int j=i;改变j并不会改变i, 这是因为5是一个右值有时候在函数传参时也会传入一个临时创建的字符串 这时用右值引用具体参考:&&右值引用...原创 2019-08-17 17:26:32 · 151 阅读 · 0 评论 -
c++ unqiue 配合erase 去重
unique “去除相邻的相同元素” 实际并未去除 只是把不重复的依次移动到了前面 实现方法如下:iterator My_Unique (iterator first, iterator last){ if (first==last) return last; iterator result = first; while (++first != last) { ...原创 2019-08-21 19:30:32 · 562 阅读 · 0 评论