01 2019 档案
摘要:模板函数的重载 普通函数可以重载,模板函数也可以重载,但规则复杂 有下面2个函数,名字相同,返回值相同就,参数不同,符合重载。 调用1 c++ std::string s("hi"); const std::string sp = &s; std::cout 所以推导出规则2:同样精准的话,更特殊的
阅读全文
摘要:c++ forward关键字 forward的由来:保持住参数的右值属性。 模板函数中的推导类型,作为另一函数的参数时,不管实参是什么类型,作为另一个参数的实参时,都变成了左值。因为C++里规定函数的形参就是左值,不管调用侧的实参是否是右值。所以,调用的另一个函数的形参即使用T&& arg来声明,传
阅读全文
摘要:模板类型的推断 下面的函数f是个模板函数,typename T。下表是,根据调用测的实参,推断出来的T的类型。 请注意下表的红字部分, f(T&& t)看起来是右值引用,但其实它会根据实参的类型,来决定T的类型,如果实参是左值,则它是左值,如果实参是右值,则它是右值。 所以可以看出来,T&可以变成c
阅读全文
摘要:文本替换方法: M % (query replace) | 输入 | 响应 | | | | | SPC 或者 y | 替换当前匹配并前进到下一个匹配处 | | DEL 或者 n | 忽略此次匹配并前进到下一个匹配处 | | . | 替换当前匹配并退出 | | , | 替换当前匹配并停在此处,再按y后
阅读全文
摘要:1, E(大写),预处理 例子:gcc E test.cpp o test.i 预处理,把程序里的 开头的替换掉,比如 include,然后生成test.i 2, P(大写),去掉预处理生成的杂乱信息 E后生成的文件里面有很多杂乱的信息,用 P可以去掉杂乱的信息。 3, S(大写),生成汇编文件 m
阅读全文
摘要:问题:在上一篇 "继承与多态 文本查询的小例子(智能指针版本)" 在Query类里使用的是智能指针,只把智能指针换成普通的指针,并不添加拷贝构造方法,会发生什么呢? 执行时,代码崩掉。 分析下面一行代码: 1,首先调用Query(string)的构造函数,把Query的成员q指向了new WordQ
阅读全文
摘要:为了更好的理解继承和多态,做一个文本查询的小例子。 接口类:Query有2个方法。 eval:查询,返回查询结果类QueryResult rep:得到要查询的文本 客户端程序的使用方法: 接口类:Query,有一个私有的父类Query_base的智能指针。 父类Query_base有子类WordQu
阅读全文
摘要:emacs 只读打开文件 : C x C r emacs 让buffer区变成只读 : C x C q emacs 让只读buffer区变成可以保存修改 : C x C q
阅读全文
摘要:显示别的文件:l "文件名.后缀名":行号 在别文件打断点:b "文件名.后缀名":行号 执行到函数末尾:finish 跳出当前函数(当前位置到函数的末尾不被执行):return
阅读全文
摘要:"c/c++ 继承与多态 容器与继承2" 巩固了容器里放智能指针的用法,但是有个问题,对于使用Basket类的用户来说,必须添加的是智能指针,如果能直接添加一个普通的类的对象的话,用起来就方便的多了,所以改进一下Basket类的add_item接口。 新的接口:一个是拷贝给定的对象,另一个是移动对象
阅读全文
摘要:"c/c++ 继承与多态 容器与继承1" 说明了容器里使用继承关系的方法,这里再弄一个练习,巩固一下。 做一个类Basket,它有个multiset成员,key是智能指针std::shared_ptr\,由于key是自定义对象,所有必须给一个比较key的函数decltype(compare) ,关于
阅读全文
摘要:问题:类B公有继承类A,类A有虚函数fun,类B覆盖了虚函数fun,有一个std::vector\,添加A的对象a,和B的对象b,到这个容器里,然后从vector里取出来,使用对象a.fun(),和对象b.fun(),会发生什么? 发现对象b.fun()的调用,实际调用的是父类A的fun()方法。也
阅读全文
摘要:静态调用,与动态调用。 动态调用条件:必须用父类的引用或者指针,并且调用的必须是虚方法。 运行结果: c/c++ 学习互助QQ群:877684253 本人微信:xiaoshitou5854
阅读全文
摘要:问题1:若类A里有公有成员方法int fcn(),类B公有继承类A,并类B里有公有成员方法int fcn(int),可以在用户代码里,用类B的对象调用类A的int fcn()吗?? 不可以,编译出错,提示类B里没有int fcn()。 是不是感觉很奇怪,类B公有继承了类A,按理说,类A的公有成员,是
阅读全文
摘要:问题1:若类B以private的方式继承类A,但还想让类A的某些个别成员,保持public或者protected的访问属性,这时应该怎么办? 使用using,去改变访问属性。 "github" 分析: 类D私有继承类Base,如果没有用using的话,类D里包含的所有Base类的成员都会变为priv
阅读全文
摘要:问题1:类B是类A的友元类,类C是类B的友元类,那么类C是类A的友元类吗?函数fun是类B的友元函数,那么fun是类A的友元函数吗? 都不是,友元关系不能传递。 问题2:类B是类A的友元类,类C是类B的子类,那么类C是类A的友元类吗? 不是,友元关系不能继承。 问题3:类A_Fri是类A的友元类,类
阅读全文
摘要:问题1:子类B可以有3种方式(public, protected, private)继承父类A,用哪种方式继承,用户代码才能把子类B的对象转换成父类A的对象呢? 只用当子类B以public方式继承父类A后,在用户代码里,才能把子类B的对象转换成父类A的对象。 原因如下: 下面例子的类Pro_derv
阅读全文