【C++】在windows下配置一个小巧实用的C/C++调试环境 虽然在大部分常用的C/C++编辑器中,调试功能已经很方便且完善,但是,如果你还需要一个小巧一点,调试信息还完善的调试环境的,可以试试在cygwin中安装cgdb+gdb-dashboard的这种配置。
【C++】用lambda表达式,让代码写的更帅一点 从C++11开始,C++就加入了lambda 表达式,如果写过js就会了解,lambda表达式实际上就差不多是js的匿名函数的意思,在C++中定义个lambda表达式,一般格式如下。可以看到,f就像平常定义的一个函数一样被调用,这就是基本的lambda表达式, 它是个函数当然也可以定义在任何地方,不光是函数内可以定义,定义在函数外也可以。可以看到,=所捕获的成员变量是可以修改的,但如果是捕获了局部变量,则还和在函数中的使用一样,只能用,不能改。a,b作为值捕获,是不能修改的,如果要修改,必须捕获是[&]。
【C++】使用自定义字面量,少写几句代码 上例使用起来就比较简单,但是,标准库提供的可能也无法满足我们所有需求,还是要自己去定义字面量类似s那些的字面量定义,自己实现上并不复杂,举个简单例子,定义一个和s相同功能的字面量,叫_MSint main()return 1;没报错,能编译,运行结果正常其实,一看operator就明白了,他就是个重载运算符的操作.只不过重载定义字面量是有一定格式和要求的。
【C++】虚函数、虚基类、纯虚函数、抽象类到底怎么回事 从运行中可以发现,父类ccc中调用了abc,这个abc并非base中的abc,而是myclass中的abc,也就是说,子类的abc覆盖了父类的abc,应为base中的abc被定义为虚函数,便被子类的abc覆盖了。可以看到base的构造函数被调用了两次,这个结果,可能是需要的,但大多数情况下可能你不需要,如果不需要,这个时候,就需要用虚基类来解决这个问题。一个简单的场景,假设有两个类,继承了同样一个基类,调用基类的abc,但按照业务需求,abc需要实现不同逻辑,这时,虚函数就有用了,举例如下。
【C++】变参函数va_start,va_arg,va_end介绍及实现方式 如果写过JS的话,就知道在JS中定义一个函数,就算输入的实参和形参不一致,也可以同过arguments获取参数上例输出1123在C/C++中其实也可以通过一些方式,获取实参中没有定义的多余参数,被称作变参函数。
【C++】C++中那些有点意思,但一般也用不到的替代运算符 事实上这些符号,我们也可以通过宏定义来做到,比如想把括号替换KuoHaoL ,KuoHaoR。以上的运算符都是在C++中语法定义的,实际上在C中就使用宏定义方式,实现了一些。所谓替代运算符无非就是用其他字符或者符号代表一些预定义的运算符和符号。就是这样,花括号可以替换成了为,无非就是换了一个表示方法。要注意的是,在c++17以后,下面几个替换运算符,已经不能使用了。在C++到20可以使用的代用符如下。如果用替代用算符表示的话。
【C++】用constexpr,constinit,consteval让程序跑的快一点 从几个例子其实也可一看出来,这三个关键字的作用,都是为了让可以确定的运算结果,在编译时就首页被执行完毕,这样,运行时等于只是操作一个具体的常量,不会在执行多余的运算,也就提高了一点运行速度。也就是说,被这三个关键字修饰的变量或者函数,即使不使用编译器、程序不运行,也能准确的知道他最终的值.这时候才能使用上述三个关键字功能。
【C++】即时编译jit和xbyak的基本使用介绍 一般来说,解释型编程语言都是依靠自身运行的虚拟机,在解释程序。有时候语言为了提高运行速度,不会去直接解释程序文本,而是模拟cpu执行方式,将文本代码执行一次翻译,翻译为类似cpu执行的汇编语言去执行。有些语言会模拟出几个CPU的寄存器,有些则使用栈的方式模拟寄存器。无论采用什么方式,基本都是循环读取文件的内容,按照一定规则去解释。这也就导致了,运行速度会慢一点,因为cpu最终执行的是虚拟机,而不是编写的语言。
【C++】一个极简单且强大的JSON操作库 今天再介绍一个用于C++操作JSON的库,以前也介绍过相关库,不过使用上稍微的复杂一点,如果常写JS的话,就知道js操作JSON相当的方便其实C++也有一个操作JSON非常方便强大库这个库的使用基本不比JS操作JSON复杂多少,最大的亮点就是不需要依赖,只有一个单文件,文件只有800多K,
【C++】虽然有用,但也不常用的decltype 从C++11开始,语法里多了一个类型运算符decltype,它可以返回表达式的类型。在C++里有个typeid运算符,也能返回类型,但是decltype和typeid使用上并不太一样,typeid事实上是返回了type_info类型的一个说明,例如以上代码输出struct A但是decltype是直接返回了测试表达式的类型,例如以上代码输出int2。
【C++】不用include,使用C++模块语法实现函数调用 写C++的时候,我们要调用其他文件中的函数或者类这些,一般情况下,就是include一个头文件,或者extern。但在C++20中,有了一个更好的调用方式:使用模块化方式进行调用。如果使用过javascrtip的话,对这种语法看上去就比较熟悉,在javascript中然后就可以在b.js中使用val了C++使用模块,也差不多,可能比在JS中使用还要简便一点,举例如下。
【C++】setjmp,longjmp的详细使用说明 我们在写C、C++语言的时候,代码在不同逻辑间的跳转是肯定的,一般情况最常用的就是if,switch这些,但是,有些时候,逻辑变得复杂的时候,比如嵌套多层循环,在最内层循环得到结果后,事实上,上面的循环就不重要了,就需要跳出整个循环体,去执行其他业务逻辑,这个时候,如果使用goto语句,去实现就方便很多,比如下例子虽然这么写方便了很多,但是goto语句的使用,尤其是如果大量大使用,会给程序的可读性和流程控制带来很大的负担,使程序难以理解和维护。所以大部分时候,是不建议使用的。...
【C语言】如何正确使用sizeof sizeof用过吧?你肯定用过,至少你刚开始学C或者C++的时候,学到类型这一节,你一定会写如下代码测试每个类型的长度。 printf("%d", sizeof(int)); printf("%d", sizeof(char)); printf("%d", sizeof(short)); printf("%d", sizeof(long)); printf("%d", sizeof(float)); printf("%d", sizeof(double));对,这就是sizeof
【C语言】static关键字的使用 static关键字大家肯定都不陌生,只要你写过c++,java,c#,或者是js,通常情况下,你肯定要使用到static关键字一般情况下,我们使用它都是用在类中的函数上,或者是函数内的变量,或者类的全局变量,在面向对象的语言当中,使用static无非就为了以下几点内部变量保存、方法的静态调用、变量的静态调用比如我们写C++的时候class abc { public: static int c; static void aaa(){ static int tt =
C/C++不用free你会释放内存吗? 写C的时候,要申请一段内存,大部分情况,是不是一般都用malloc,比如int *p = (int*)malloc(100);大家都知道,这是分配100个int大小的内存地址,用完以后呢?释放,一定要释放,如果不释放,这段内存会一直保存,如果你的malloc写在循环内,多大的内存最终都能耗尽现在做个测试环境:vs2015,win10写个例子int main(){ int *p = (int*)malloc(100); _CrtDumpMemoryLeaks(); return
用CSS把文字显示成哆啦A梦 先看一下最终效果左面是最终效果,右面是原图先说说要实现这个效果使用的方法:background-clip一、background-clip介绍background-clip:按照MDN上说的,“设置元素的背景(背景图片或颜色)是否延伸到边框、内边距盒子、内容盒子下面”简单的说,就是你设置的背景图片,如何裁剪背景图片,或者说如何填满它所在的容器看例子,现在有这么个样式计算样式如下它的CSS如下p { border: 10px red; border-style: dotted d