C++
MR崔建超
这个作者很懒,什么都没留下…
展开
-
【C++】指针
C语言指针的内存申请和释放malloc 申请内存free 释放内存int* i;i = (int*)malloc(sizeof(int));*i = 0;free(i);i = nullptr;C语言和C++的区别,在于C++ new的时候,申请内存的同时也会调用构造函数delete 会调用析构函数和释放内存NULL 和nullptr的区别C++11提供了nullptr来避免这种情况的发生。所以建议指针的置空都用nullptrvoid Print(..原创 2021-08-05 17:35:03 · 57 阅读 · 0 评论 -
【C++11】如何防止枚举成员出现重定义
C++11 枚举方式是添加一个class修饰符,防止枚举成员出现重定义的错误enum class HOUSE { big, small };enum class COMPUTER { big, small};这样编译的时候就不会出错了。 使用要加上枚举名来限定枚举量: HOUSE h = HOUSE::big; COMPUTER c = COMPUTER::small;...原创 2021-08-05 13:06:34 · 583 阅读 · 0 评论 -
【C++】字符串拼接及速度对比
百万级以上字符串拼接建议使用append string str; clock_t c = clock(); //执行100w次 for (int i = 0; i < 1000000; i++) { str = str + "hello";//最慢,基本卡死 } clock_t c2 = clock(); //+= 0.183ms append 0.17ms cout << double(c2 - c) / CLOCKS_PER_SEC << e原创 2021-08-05 09:33:51 · 723 阅读 · 0 评论 -
【C++】string 与const char* 、char* 字符串的转换
//string转const char*string s ="abc";constchar* c_s = s.c_str();// const char*转string 直接赋值即可constchar* c_s ="abc";string s(c_s);// string转char*string s ="abc";char* c;constint len = s.length();c =newchar[len+1];strcpy(c,s.c_str()); //ch.原创 2021-08-04 20:52:38 · 264 阅读 · 0 评论 -
【C++】C语言和C++字符串
C语言int main(){ const char* str = "World"; //============C风格字符串==================== //输出:printf 打印到控制台 printf("hello,%s\n", str); //输入:把字符串传给一个char* 数组 char str2[10]; sprintf(str2, "%d", 123); printf("%s\n",str2); //获取字符串长度 cout << st原创 2021-08-04 18:51:04 · 82 阅读 · 0 评论 -
【C++】常量
常量的初始化常量必须在定义的时候进行初始化const int b;//error 常量必须要在定义的时候初始化const int a = 123;常量引用const 声明的引用可以被任意同类型int,string...所赋值初始化,初始化后的常量引用不能再被修改const int a = 10;const int &aa = a;aa = 123;//erro const int 不能修改数值常量成员初始化型的成员除在定义的时候初始化外,必须在构造函数以列表形式原创 2021-08-04 14:01:32 · 176 阅读 · 0 评论 -
【C++】std 命名空间
为了避免头文件重名,新版 C++ 库也对头文件的命名做了调整,去掉了后缀.h,所以老式 C++ 的iostream.h变成了iostream,fstream.h变成了fstream。而对于原来C语言的头文件,也采用同样的方法,但在每个名字前还要添加一个c字母,所以C语言的stdio.h变成了cstdio,stdlib.h变成了cstdlib。命名空间的声明是有作用域的,可以在函数内部声明。...原创 2021-08-04 13:31:19 · 119 阅读 · 0 评论 -
【C++11】 Lambda表达式
[ ] 捕获行为 []默认不捕获,就代表不能用lambda函数体外的参数 =值拷贝捕获 &引用捕获 [=,&name] 除了name使用引用,其他使用是值拷贝 所有值拷贝的数据不能在函数体内使其左值修改,如果想要修改可以使用mutable [=] () mutable{a++;}; [this] 表示可以使用所在类中的成员变量或者函数 int Func(int id, string name){ int a =0原创 2021-08-02 21:21:45 · 78 阅读 · 0 评论 -
【C++】方法的重写、重载、重定义
重写:对父类的同名虚函数进行重定义,有多态的效果重载:方法或者类中的成员方法定义的时候,方法名相同,参数不同,参数顺序不同;未实现多态重定义:对父类同名方法进行重新定义,未实现多态class Parent{public: Parent(int a, int b):A(a),B(b) { } int A; int B; void Print() { cout << "A " << A << endl; cout <<原创 2021-07-30 13:16:04 · 794 阅读 · 0 评论 -
C++内存区分析
内存模型分为5个区:栈区、堆区、静态区、常量区、代码区。每个区存储的内容如下:1、栈区:存放函数的参数值、局部变量等,由编译器自动分配和释放,通常在函数执行完后就释放了,其操作方式类似于数据结构中的栈。栈内存分配运算内置于CPU的指令集,效率很高,但是分配的内存量有限,比如iOS中栈区的大小是2M。2、堆区:就是通过new、malloc、realloc分配的内存块,编译器不会负责它们的释放工作,需要用程序区释放。分配方式类似于数据结构中的链表。“内存泄漏”通常说的就是堆区。3、静态区:全局变量和原创 2021-07-28 21:16:33 · 109 阅读 · 0 评论 -
控制台 常用DOS命名
system("cls");//清屏system("pause");//暂停程序执行,直到用户按下回车键system("color 6A");//6前景色 0背景色system("time");//显示修改时间;/T只显示时间system("Date /T");//Date 显示和修改日期;/T只显示日期system("shutdown -p");//-p立即关机system("shutdown -s -t 60");//60s后关;exit(0);//退出程序以下作为日常查询使用,使用.原创 2021-07-28 20:38:09 · 146 阅读 · 0 评论