随笔分类 -  C++

摘要:很少用,列出来,便于理解和熟悉!!! 阅读全文
posted @ 2019-08-07 15:54 Yong_无止境
摘要:在C++的类中,普通成员函数不能作为pthread_create的线程函数,如果要作为pthread_create中的线程函数,必须是static ! 参考:https://blog.csdn.net/ksn13/article/details/40538083 在C++的类中,普通成员函数不能作为 阅读全文
posted @ 2019-08-07 15:46 Yong_无止境
摘要:string和int的相互转换 string转int int转string 记忆:转成int就是i开头的类型,转成string就是s开头的类 阅读全文
posted @ 2019-08-07 15:43 Yong_无止境
摘要:如何判断一个变量是不是指针? 思路:模板函数 + 可变参数 + sizeof(函数) 阅读全文
posted @ 2019-08-07 15:38 Yong_无止境
摘要:C++使用typeid关键字进行类型检查 不同的编译器使用typeid返回的类型名称不严格一致,需要特别注意 也可以使用虚函数,返回各自的类型名 如果typeid的操作数不是类类型(类指针也算)或者是没有虚函数的类,则typeid指出该操作数的静态类型。如果操作数是定义了至少一个虚函数的类类型,则在 阅读全文
posted @ 2019-08-07 15:34 Yong_无止境
摘要:异常处理(C语言) 异常是对代码中可以预知的问题进行处理;代码中不可以预知的问题叫Bug; if () { ... } else { ... } setjmp和longjmp 异常是对代码中可以预知的问题进行处理;代码中不可以预知的问题叫Bug; if () { ... } else { ... } 阅读全文
posted @ 2019-08-07 15:29 Yong_无止境
摘要:类模板和函数模板类似,主要用于定义容器类 类模板可以偏特化,也可以全特化,使用的优先级和函数模板相同 类模板不能隐式推倒,只能显式调用 工程建议: 模板的声明和实现都在头文件中 成员函数的实现在类外 类模板和函数模板类似,主要用于定义容器类 类模板可以偏特化,也可以全特化,使用的优先级和函数模板相同 阅读全文
posted @ 2019-08-07 15:22 Yong_无止境
摘要:函数模板的目的是代码复用 普通函数和模板函数可以形成重载,调时优先调用普通函数,其次调用模板函数 模板函数要编译两次,第一次是具现出具体的函数,第二次是对具现出的函数进行编译 函数模板调用特点: 不进行隐式类型转换 返回值不能进行自动推倒 普通函数和模板函数形成重载时,可以显示的调用模板函数 建议: 阅读全文
posted @ 2019-08-07 15:19 Yong_无止境
摘要:下面的代码会飞吗? 下面代码会跑飞吗? 不会 原因:调用成员函数时,对象地址是作为参数传递的,只要在成员函数里面不调用就不会跑飞,但是this指针为NULL,调用成员函数本身不会涉及到对象地址 下面代码会跑飞吗? 不会 原因:调用成员函数时,对象地址是作为参数传递的,只要在成员函数里面不调用就不会跑 阅读全文
posted @ 2019-08-07 15:07 Yong_无止境
摘要:new和malloc以及delete和free的区别 new和delete是C++的关键字,malloc和free是库函数 new和delete会先调用构造函数和析构函数,然后释放内存,malloc和free直接就是释放内存 构造函数和析构函数能不能是虚函数 构造函数不能是虚函数:因为构造函数执行完 阅读全文
posted @ 2019-08-07 15:05 Yong_无止境
摘要:工程中不建议使用多继承,因为多继承带来的问题比带来的便利多,已被放弃 问题一:多重继承的对象,向上获取指针时,有不同的地址 无法解决 问题二:菱形继承问题,导致成员冗余 虚继承(各种编译器的实现方式不一致,不具备抑制性) 多重继承产生多个虚函数表,建议使用dynmaic_cast进行类型转换 工程中 阅读全文
posted @ 2019-08-07 08:45 Yong_无止境
摘要:C++中没有抽象类的概念 含有纯虚函数的类就是抽象类,抽象类的特点: 不能产生实例对象 只能被继承 接口是抽象类的一种特殊情况,具备以下条件的抽象类就是接口: 类中没有成员变量 所有的成员函数都是纯虚函数 所有的函数都是public权限 抽象类是对类的进一步抽象,接口只是对行为的抽象 C++中没有抽 阅读全文
posted @ 2019-08-07 08:23 Yong_无止境
摘要:子类中的同名成员会覆盖父类中的同名成员,但是在内存中仍然存在,只是无法直接访问,需要加上域名才能访问 子类中的同名函数会覆盖父类中的函数,复写是同名覆盖的一种特殊情况,只要不是多态场景,复写也遵守同名覆盖原状 实现多态的条件: 继承 虚函数复写 基类的指针或引用指向子类对象 子类中的同名成员会覆盖父 阅读全文
posted @ 2019-08-07 08:21 Yong_无止境
摘要:先父母,后客人,最后自己 静态变量和全局变量在最开始 析构和构造的顺序完全相反 先父母,后客人,最后自己 静态变量和全局变量在最开始 析构和构造的顺序完全相反 阅读全文
posted @ 2019-08-06 19:32 Yong_无止境
摘要:对于一个对象而言,成员变量和成员函数是分开存放的 成员函数位于代码段,所有的类对象共有 成员变量为每一个对象独有,位于内存中 类对象在内存中的分布和struct完全相同 对于继承,子类的对象是在父类的对象的基础上,加上子类自己的成员 对于一个对象而言,成员变量和成员函数是分开存放的 成员函数位于代码 阅读全文
posted @ 2019-08-06 19:27 Yong_无止境
摘要:C++类型转换主要包含两种: 隐式类型转换 小类型向大类型转换 char -> int short ->int int -> unsigned int int -> float float ->double 显示类型转换 const_cast:移除变量的const属性 static_cast:完成基 阅读全文
posted @ 2019-08-06 19:00 Yong_无止境
摘要:单独的"++i"和"i++"是否有区别 对于基本类型: 二者没有区别,因为编译器会对代码进行优化,二者的汇编代码完全相同 对于类类型: 二者有区别 前置的效率更高,建议使用 重载"++i"和"i++" 重载前置操作符:classname& operator ++() 重载后置操作符:classnam 阅读全文
posted @ 2019-08-03 16:40 Yong_无止境
摘要:逗号操作符算法:从左到右依次计算每一个表达式的值,整个逗号表达式的值等于最右边表达式的值,前面n-1个表达式可以没有返回值 重载逗号操作符: 参数必须有一个class成员 重载函数返回值类型必须是引用 使用全局函数对逗号操作符进行重载 不建议重载逗号操作符:不能实现左到右依次计算每一个表达式的值,重 阅读全文
posted @ 2019-08-03 16:39 Yong_无止境
摘要:不建议重载逻辑操作符 原因:无法实现逻辑操作符的短路功能(即:不需要计算完全部表达式就可以得出结果) 逻辑操作符:|| && 操作符重载本质上是函数调用,而进行函数调用之前一定要计算出所有参数的值,然后才能调用函数,所以无法实现短路功能 不建议重载逻辑操作符 原因:无法实现逻辑操作符的短路功能(即: 阅读全文
posted @ 2019-08-03 16:32 Yong_无止境
摘要:用于缓解内存泄露的问题 用于替代原生指针 军规:只能指向堆空间中的对象或变量 方法 在智能指针的析构函数中调用delete 重载"->"操作符,只能重载成成员函数,且不能有参数 禁止智能指针的算术运算 一块对空间只能被一个智能指针指向 用于缓解内存泄露的问题 用于替代原生指针 军规:只能指向堆空间中 阅读全文
posted @ 2019-08-03 16:20 Yong_无止境