C++
从心开始yjh
鸿鹄志。
展开
-
《函数模板学习笔记》
函数模板函数模板的目的:当函数的逻辑相同,但函数参数类型不同时,让类型参数化。#include <iostream>using namespace std;template <typename T1, typename T2>//通知编译器开始泛型编程void TPrint(T1 x, T2 str1) //两个不同参数的情况{ cout <<...原创 2018-11-11 20:19:37 · 167 阅读 · 0 评论 -
《虚函数的工作原理详解-C++ Primer上讲的简单易懂》
最近看C++ Primer第六版,无意中看到第十三章的虚函数的工作原理,发现比我之前看的人家写的博客还要通俗易懂还很简洁,所以分享出来。编译器处理虚函数的方法是:给每个对象添加一个指针,存放了指向虚函数表的地址,虚函数表存储了为类对象进行声明的虚函数地址。比如基类对象包含一个指针,该指针指向基类所有虚函数的地址表,派生类对象将包含一个指向独立地址表的指针,如果派生类提供了虚函数的新定义,该...原创 2019-03-03 10:23:35 · 870 阅读 · 1 评论 -
《C++Primer笔记--13章-类继承》
面向对象的主要目的之一是提供可供重用的代码,C++可通过继承能从已有的类派生出新的类,而派生类继承类原有类的特征和方法。比如可在已有类添加功能、数据、修改类方法等。13.1 一个简单的基类从一个类派生出另一个类时,原始类为基类,继承类为派生类,下面设计个简单的TableTennisPlayer类。该类的构造函数采用了成员初始化列表语法,效果和下面一样:这里的构造函数的形参类型为常...原创 2019-03-03 15:42:47 · 371 阅读 · 0 评论 -
《C++类设计常用的指导原则》
下面介绍一些C++类设计常用的指导原则:13.8.1 编译器生成的成员函数1.默认构造函数(1) 默认构造函数要么没有参数,要么参数都有默认值。如果未定义任何构造函数,编译器将定义默认构造函数,让你能够创建对象,或者调用基类默认构造函数及本身是对象的成员所属类的默认构造函数。(2) 派生类构造函数的成员初始化列表没有显式调用基类构造函数,编译器将使用基类默认构造函数构造派生类的基类对象,避...原创 2019-03-03 16:50:03 · 325 阅读 · 0 评论 -
++i比i++的效率高?
前++和后++的效率问题 1、对于内置数据类型,以现在的编译器的优化水平,前++和后++没区别的,这个可以通过看汇编代码证明2、对于自定义数据类型,像STL,前++的效率要高于后++,所以STL中关于iterator都是前++的只有在必要时才使用后置操作符,因为前置操作需要做的工作更少,只需要加1后返回加1后的结果即可。而后置操作符则必须先保存操作数原来的值,以便返回未加1之前的值作为操作...转载 2019-03-15 11:54:28 · 610 阅读 · 0 评论 -
剑指offer面试题14-剪绳子(动态规划和贪婪法)
动态规划问题的三个特点:(1) 求一个问题的最优解(通常是求最值)(2) 该问题能分成若干个问题的子问题(3) 并且子问题之间还有重叠的更小的子问题(4) 从上往下分析问题,从下往上解决问题满足上面的条件可以考虑使用动态规划。求解动态规划问题时,总是从最小问题开始解决,并将已解决的子问题的最优解存储下来,并把子问题最优解组合逐步解决大的问题。贪婪算法每一步都可做一个贪婪选择,基于该...原创 2019-03-15 17:22:36 · 513 阅读 · 0 评论 -
华为、腾讯C++编码规范
转自https://blog.csdn.net/qq_42550817/article/details/82227564一:华为公司程序设计风格 1. 排版 1.1 程序块要采用缩进风格编写, 缩进的空格数为4个。 说明: 对于由开发工具自动生成的代码可以有不一致。 1.2 相对独立的程序块之间、变量说明之后必须加空行。; 1.3 循环、判断等语...转载 2019-03-23 10:49:34 · 3480 阅读 · 0 评论 -
C++字符分割函数strtok()的用法
最近遇到需要对输入string类型数据按逗号或者空格进行分割的情况,但strtok函数要求输入char *类型数据,但我直接接收的是string类型,所以先要对数据类型进行转换,然后再使用。#include<iostream>#include<vector>#include<string>using namespace std;int main(){...原创 2019-04-23 15:31:38 · 816 阅读 · 2 评论 -
自己编写的字符串分割函数mysplit()
利用strtok()函数封装成的字符串分割函数mysplit()sourceStr为源字符串splitSymbol为分隔符号strArray为分割后的字符串,以vector形式返回#include<iostream>#include<string>#include<stdio.h>#include<vector>using names...原创 2019-04-24 16:22:47 · 1064 阅读 · 3 评论 -
C++中static成员使用时应注意几点
static成员特点:1.可以通过类名调用static成员如Point::output();2.静态成员函数中不能引用非静态成员,但非静态函数可调用静态函数。3.类的静态成员变量必须先初始化再使用。...原创 2019-05-19 10:15:19 · 311 阅读 · 0 评论 -
牛客网校招全国统一模拟笔试(二月场)- C++方向部分选择题解析
请问下面程序输出啥?#include&amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;#include&amp;amp;amp;lt;string.h&amp;amp;amp;gt;int main(void){int n,m;char y[10] = “ntse”;char *x = y;n = strlen(x);*x = x[n];x++;printf(“x=%s\n原创 2019-02-21 21:25:35 · 1173 阅读 · 0 评论 -
VS中添加lIb库及头文件(外部依赖项)的步骤
VS中添加LIb库及头文件(外部依赖项)的步骤:1、添加工程的头文件目录:工程—属性—配置属性—c/c+±–常规—附加包含目录:加上头文件存放目录。2、添加文件引用的lib静态库路径:工程—属性—配置属性—链接器—常规—附加库目录:加上lib文件存放目录。然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名。3、添加工程引用...转载 2019-01-23 00:49:30 · 4752 阅读 · 2 评论 -
《C++ Primer Plus第六版学习笔记--第11章 使用类》
第11章 使用类运算符重载运算符重载是一种形式的c++多态(还有函数重载)。可以让同名符号或函数 用于不同数据类型或根据传入参数不同执行不同操作。C++允许运算符重载扩展到用户定义的类型,比如允许+将两个对象相加,运算符函数形式如下:operator+()重载+号。但注意不能重载C++中没有的运算符如@。Eg:重载+号使Time类的对象可加 Class time { ...原创 2018-11-08 21:03:38 · 644 阅读 · 0 评论 -
《C++Primer笔记--12章-类和动态内存分配》
第12章 类和动态内存分配本章节介绍如何对类使用new和delete,及如何处理由于使用动态内存而引起的微妙问题。1. 复习示例和静态类成员首先设计一个StringBad类:程序清单stringbad.h#include#ifndef STRINGBAD_H_#define STRINGBAD_H_class StringBad{private:char *str;int...原创 2018-12-23 18:26:47 · 243 阅读 · 0 评论 -
VS中报错IntelliSense: argument of type "void *" is incompatible with parameter of type "const char *"
在用VS编写C++程序的时候,遇到这样的问题IntelliSense: argument of type “void *” is incompatible with parameter of type “const char *”,但是给的例程确实传入参数就是void *,网上找了很久没发现解决办法。size_t getcontentlengthfunc(void *ptr, size_t si...原创 2019-01-22 22:40:01 · 11449 阅读 · 0 评论 -
vs程序出错运行上次的成功的exe
用VS写程序时误点了继续并运行上次的成功运行的程序,导致每次出错都运行之前可用的版本,导致有时候会误以为程序正常,下面设置可以不运行之前的成功exe:工具-》项目和解决方案-》生成并运行-》运行时,当出现生成或部署错误时-》提示启动...原创 2019-01-22 22:49:41 · 4674 阅读 · 3 评论 -
VS控制台程序被暂停,回车继续运行
最近用vs调试程序时,用控制台定时1s打印一次信息,调试过程发现偶尔出现控制台停止打印。不管是否开启多线程,都会出现该问题,而且也怀疑可能是sleep()延时阻塞导致的问题。后来多次实验发现敲一个回车键程序又会继续运行,才发现是是vs控制台提供的暂停功能,即控制台连续打印过程中,鼠标单击控制台的界面(控制台边框内)程序会暂停,打印也停止,可以方便查看打印信息,点回车键后又会继续运行。...原创 2019-01-22 22:59:21 · 4275 阅读 · 3 评论 -
VS如何设置显示代码行数
设置VS显示代码行数,可以方便调试代码,工具-》选项-》文本编辑器-》C/C+±》常规-》行号勾选上参考了https://jingyan.baidu.com/album/af9f5a2d2e193543140a4533.html?picindex=2...转载 2019-01-22 23:06:31 · 12214 阅读 · 0 评论 -
C/C++程序中数字int、字符串string、char*之间的转换方法汇总
在写跨平台C/C++程序时,可能会用到数字int、字符串string、char*之间的转换,下面是一些方法的汇总:int atoi (const char * str);//字符串转intlong int atol ( const char * str );//字符串转longdouble atof (const char* str);//字符串转doublechar *itoa(i...原创 2019-01-23 00:18:28 · 857 阅读 · 0 评论 -
VS调试C++程序出现报错 LINK : fatal error LNK1168: cannot open Debug/xxx.exe for writing
是因为之前的控制台程序没有按任意键结束,而是直接按X关闭,导致之前的进程还在运行,此时需要在任务管理器找出并杀死该进程。参考:https://blog.csdn.net/li2327234939/article/details/50878677...转载 2019-01-23 00:34:30 · 2188 阅读 · 0 评论 -
VS程序出现_XXX_NO_WARNINGS类型错误解决方法
VS写C程序时,有时用printf(),scanf(),fopen(),以及跟winsocket相关函数时都会出现_XXX_NO_WARNINGS类型错误,解决方法很简单,根据提示的错误直接在Project->Properties->C/C+±>Preprocessor->Preprocessor Definitions 中添加该参数即可,常见的参数有:_WINSOCK_...原创 2019-01-23 00:43:01 · 635 阅读 · 0 评论 -
QT界面运行时间一久就崩溃
最近写程序时出现了一个奇怪现象,一个界面程序显示数据,下面有TextEdit打印数据信息,时间运行一久就出现界面卡死崩溃,而且因为处理的东西不复杂只开了单线程,无内存泄漏等问题。最终发现是–程序运行久了TextEdit里面的打印内容过多,而我一直没清空,最终导致程序崩溃。所以在控件中打印信息而且是累加的信息,一定要记得清空。...原创 2019-05-24 18:48:57 · 3143 阅读 · 0 评论