C++语法
文章平均质量分 65
Gamer_code
这个作者很懒,什么都没留下…
展开
-
main函数中的argc和argv
C++ main函数的参数 C++的main函数可以没有输入参数,也可以有输入参数,而且只能有两个参数,习惯上coding如下: int main(int argc, char* argv[]) 或者 int main(int argc, char** argv) 其中,argc = argument count :表示传入main函数的数组元素个数,为int类型,而 argv = argument vector :表示传入main函数的指针数组,为char**类型。第一个数组元素argv转载 2022-05-27 11:55:03 · 2871 阅读 · 0 评论 -
C++ 函数指针和指针函数
C++中的一个重要概念及其特点,也是掌握C++ 比较困难的部分。本文主要介绍函数指针和指针函数用法及区别。1、指针函数指针函数,简单理解就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。声明格式如下:*类型标识符 函数名(参数表)例如,int *myfun(int x,int y);注意:在函数名前面多了一个*号,而这个函数就是一个指针函数。其返回值是一个 int 类型的指针。指针函数的写法可以有以下几种:int *fun(int x,int y);原创 2022-03-03 16:06:40 · 4017 阅读 · 0 评论 -
C++智能指针
C++中有auto_ptr,unique_ptr,shared_ptr,weak_ptr四种智能指针。智能指针的主要作用是管理堆内存。因为在C++中,堆内存由程序员手动释放,那有时候可能会出现程序员忘记释放的这一种情况,智能指针就是为了防止这种情况出现的,它的作用是自动化的管理我们的堆内存。1.auto_ptrauto_ptr是在C++98中引进的一个概念,那它在C++11中是已经被废弃了。原因是使用auto_ptr可能会造成和我们的浅拷贝相似的问题:同一块内存的重复释放,导致程序崩溃。原创 2022-02-22 15:18:58 · 557 阅读 · 0 评论 -
template的用法(超详细)
假如我们有以下函数int compare(const string &v1,const string &v2){ if(v1<v2)return -1; if(v1>v2)return 1; return 0;}这个函数比较两个值并指出两个值的大于,小于或者等于关系。1.函数模板1.template<typename T>int compare(const T&v1,const T&v2){原创 2021-11-21 14:05:05 · 59666 阅读 · 4 评论 -
for循环的正确执行顺序
假设有以下for循环:for(init-statement;condition;expression){ //statement}那么它的计算顺序如下:1.循环开始时,先执行一次init-statement2.接着,求解condition。如果条件为true,执行循环,如果条件为false,则不执行for循环体3.如果condition条件为true,执行for循环体statement4.注意!重点来了!最后才是求解这个expression!...原创 2021-11-20 17:02:34 · 1364 阅读 · 0 评论 -
C++-回调函数
1. 什么是回调函数?回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢?恕我读得书少,没有在那本书上看到关于回调函数的定义。我在百度上搜了一下,发现众说纷纭,有很大一部分都是使用类似这么一个场景来说明:A君去B君店里买东西,恰好缺货,A君留下号码给B君,有货时通知A君。感觉这个让人更容易想到的是异步操作,而不是回调。另外还有两句英文让我印象深刻:1) If you call me, I will call you back; 2) Don't call me, I will call转载 2021-09-17 17:35:14 · 3994 阅读 · 0 评论 -
C++右值引用
1.左值和右值什么是左值和右值?在C++中,一个表达式,不是左值就是右值左值:可以取地址,位于等号左边右值:不能取地址,位于等号右边(右值没有可标识的地址,右值仅仅是计算过程中保存在寄存器的临时值)int a = 5;a可以通过&取地址,位于等号左边,所以a是一个左值 5不能通过&取地址(编译器会报错),位于等号右边,所以5是一个右值可以使用&取地址运算符判断一个表达式是否为左值,即是否有一个地址,&作用于右值时,编译器会报错2.原创 2021-09-17 16:12:18 · 101 阅读 · 0 评论 -
explicit关键字
1.explicit关键字的作用explicit关键字的作用就是防止类构造函数的隐式自动转换class CxString // 使用关键字explicit的类声明, 显示转换 { public: char *_pstr; int _size; explicit CxString(int size) { _size = size; // 代码同上, 省略... } CxStri.原创 2021-09-16 20:48:17 · 264 阅读 · 0 评论 -
C++11Lambda表达式
C++ 11 Lambda表达式C++11的一大亮点就是引入了Lambda表达式。利用Lambda表达式,可以方便的定义和创建匿名函数。对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多高级语言在很早以前就已经提供了Lambda表达式的功能,如C#,Python等。今天,我们就来简单介绍一下C++中Lambda表达式的简单使用。声明Lambda表达式Lambda表达式完整的声明格式如下:[capture list] (params list)转载 2021-09-16 20:41:29 · 89 阅读 · 0 评论 -
constexpr
1.用constexpr修饰变量1.1 const在 C++11 之前只有 const 关键字,从功能上来说这个关键字有双重语义:变量只读,修饰常量,举一个简单的例子:void func(const int num){ const int count = 24; int array[num]; // error,num是一个只读变量,不是常量 int array1[count]; // ok,count是一个常量 in.转载 2021-09-15 15:25:53 · 16473 阅读 · 4 评论 -
C++中的static
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下://Example 1#include <iostream.h>void fn();static int n; //定义静态全局变量void转载 2021-09-14 23:21:33 · 12849 阅读 · 2 评论 -
C++std
std::是个名称空间标识符,C++标准库中的函数或者对象都是在命名空间std中定义的,所以我们要使用标准库中的函数或者对象都要用std来限定。至于为什么将cout放到名字空间std中,是因为象cout这样的对象在实际操作中或许会有好多个,比如说你自己也可能会不小心定义一个对象叫cout,那么这两个cout对象就会产生冲突。那么std都是在什么时候使用?一般来说,std都是要调用C++标准库时使用。比如:使用标准库文件iostream时,要写上std;使用非标准库文件iostream.h,...转载 2021-09-14 19:24:20 · 2452 阅读 · 0 评论 -
final关键字
final关键字的含义:final关键字代表最终的、不可改变的常见的四种用法:① 可以用来修饰一个类② 可以用来修饰一个方法③ 可以用来修饰一个局部变量④ 可以用来修饰一个成员变量1、final关键字用于修饰类格式如下: public final class 类名称 { ... }作用:使当前这个类不能有任何子类。(“太监类”)注意:一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写2、final关键字用于修饰成员方法格式如下...转载 2021-09-14 19:18:27 · 276 阅读 · 0 评论 -
inline函数
1.inline函数1.为什么要用inline函数对于一个代码很少的函数,函数调用时传递参数和得到返回结果的开销可能比函数体内部代码的开销还大,并且编译器生成用于参数传递或返回结果的代码可能比函数体代码占用更多内存,对于这种短小的函数,可以在函数定义前用关键字inline声明为内联函数,从而可避免函数调用的开销,提高程序效率,且使程序代码更短。2.inline函数做了什么inline函数指示编译器在编译时将函数调用语句替换为函数体的代码并对函数体的局部变量名做一些调整。例如:inl原创 2021-09-14 19:03:21 · 1260 阅读 · 0 评论