
C++
sun123704
这个作者很懒,什么都没留下…
展开
-
string、const char*、 char* 、char[]相互转换
一、转换表格源格式\目标格式stringconst char*char*char[]string–const char*=string.c_str();const char*=string.c_str(); char*=<const_cast><char*>(const char*);for(int i=0;i< string.length();i++) { char[i]=string[];}const char*string =原创 2021-04-26 16:27:09 · 194 阅读 · 0 评论 -
C特性——持续学习更新
1、attribute关键字__attribute__也可以对结构体(struct)或共用体(union)进行属性设置。大致有六个参数值可以被设定,即:aligned, packed, transparent_union, unused, deprecated和may_alias。attribute((deprecated)) 管理过时的代码在开发一些库的时候,API的接口可能会过时,为了...原创 2020-04-30 12:48:19 · 400 阅读 · 0 评论 -
C++11特性——STL容器push_back与emplace_back
C++11新加入了emplace_back():如果要将一个临时变量push到容器的末尾,push_back()需要先构造临时对象,再将这个对象拷贝到容器的末尾,而emplace_back()则直接在容器的末尾构造对象,这样就省去了拷贝的过程。上代码:#include <iostream>#include <cstring>#include <vector&...原创 2020-04-27 09:47:43 · 728 阅读 · 1 评论 -
C++11特性——右值引用与移动构造函数
面试时遇到的问题,之前的了解是浅尝辄止,但合格的程序媛应该不能止于此。左值引用和右值引用先理解两个概念:左值和右值。早期C语言给出的定义是:左值是一个表达式,可以出现在=的左边或右边;但右值只能出现在右边。 这个定义太模糊了。到了C++中,可以这么理解:对于一个表达式,凡是对其取地址(&)操作可以成功的都是左值,否则就是右值。 好了,下面我们看几个例子来加深下理解:int x = 4...转载 2020-02-28 15:02:29 · 510 阅读 · 0 评论 -
c++中default、explicit、override、final、volatile关键字(持续更新)
C++ 的类有四类特殊成员函数,它们分别是:默认构造函数、析构函数、拷贝构造函数以及拷贝赋值运算符。这些类的特殊成员函数负责创建、初始化、销毁,或者拷贝类的对象。如果程序员没有显式地为一个类定义某个特殊成员函数,而又需要用到该特殊成员函数时,则编译器会隐式的为这个类生成一个默认的特殊成员函数。例如:class X{ private: int a; }; X x;上述程序中,...原创 2019-11-14 11:13:17 · 1232 阅读 · 0 评论 -
Coursera C++程序设计——运算符重载
运算符的重载的实质是函数重载返回值类型 operator 运算符(形参表){ ……}运算符可以重载为普通函数,也可以重载为成员函数(1)普通函数:重载为普通函数时,参数个数为运算符目数Complex operator+ (const Complex &a, const Complex &b){ return Complex(a.real + b....原创 2019-01-23 14:51:35 · 201 阅读 · 0 评论 -
Coursera C++程序设计——运算符重载为友元函数
一般将运算符重载为类的成员函数,重载为友元函数的情况:1.成员函数不能满足使用要求;2.普通函数不能访问类的私有成员。将运算符重载为成员函数的情况:class Complex{ double real, imag; public: Complex(double r, double i):real(r),imag(i){} Complex operator+(...原创 2019-02-25 16:38:30 · 335 阅读 · 0 评论 -
【Google代码规范】之——命名约定
命名风格直接确定的命名实体是:类型、变量、函数、常量、宏等等,无需查找实体声明,人体大脑的模式匹配引擎依赖于这些命名规则。1、通用命名规则函数命名、变量命名、文件名命名具有描述性,不能过度缩写,类型和变量名应为名词,函数名应用“命令性”动词。尽可能给出描述性名称,不能节约空间,让别人很快理解你的代码:int num_errors; //good...原创 2019-03-08 10:32:01 · 1271 阅读 · 0 评论 -
【Google代码规范】之——格式
1、行长度(有争议)每一行代码字符数不超过 80。2、非 ASCII 字符尽量不使用非 ASCII 字符,使用时必须使用 UTF-8 格式。3、空格vs.制表位(Space vs. Tabs)只使用空格,每次缩进2个空格。使用空格进行缩进,不要在代码中使用tabs,设定编辑器将tab转为空格。4、函数声明与定义返回类型和函数名在同一行,合适的话,参数也在同一行。函数...原创 2019-03-08 15:37:58 · 1056 阅读 · 0 评论 -
C++风格与C风格的字符串(string V.S. char* V.S. char [])
转自:https://www.cnblogs.com/Pillar/p/4206452.html目录一、string转char*1.data()方法2.c_str()方法一、string转char* 主要有三种方法可以将str转换为char*类型,分别是:data(); c_str(); copy();1.data()方法string str = "hello"...转载 2019-03-29 10:27:40 · 294 阅读 · 0 评论 -
解决gdb list No symbol table提示
list命令后显示No symbol table is loaded. Use the "file" command.原来编译用:gcc -o filename filename.c解决办法,编译时加 一定要加-g:gcc -o filename -g filename.c原创 2019-04-09 13:44:54 · 1594 阅读 · 0 评论 -
VS Code C++ 代码格式化方法(clang-format)
前提条件安装扩展C/C++,扩展程序将自动安装clang-format。clang-format默认安装路径为"C:\Users\Users\.vscode\extensions\ms-vscode.cpptools-0.16.1\LLVM\bin\clang-format.exe"首选项设置打开首选项设置【ctrl + ,】C_Cpp:Clang_format_style...原创 2019-09-16 15:24:43 · 14560 阅读 · 3 评论 -
Coursera C++程序设计——第三周笔记(3)
第四课——友元友元函数 友元类(1)友元函数:一个类的友元函数可以访问该类的私有成员;class CCar{ private: int price; friend int MostExpensiveCar( CCar cars[], int total); //声明友元};除了可以将普通函数定义为一个类的友元函数外,还可以将一个类的成员函数(包括构造、析构...原创 2019-01-21 09:39:20 · 283 阅读 · 0 评论 -
Coursera C++程序设计——第三周笔记(1)
第一课——内联成员函数 其有两种定义方式:inline + 成员函数 整个函数体出现在类定义内部class B{ inline void func1(); //func1是内联成员函数 void func2() //func2是内联成员函数 { };};void B::func1(){}第一课——构造函数当类中自...原创 2019-01-13 10:22:47 · 342 阅读 · 1 评论 -
“常量指针” 和 “指针常量”
一、常量指针定义为:1)const int *p;2)int const *p;注意:const在表示指针的符号“*”前面即可,且名字也是“常量”在前,“指针”在后;常量指针含义:指针指向的对象不能通过这个指针来修改,但仍然可以通过原来的声明修改,也就是说常量指针作为一个指针,被赋值为变量的地址,但是限制了通过这个指针修改变量的值。如:int a = 5;const...转载 2018-08-10 21:51:38 · 122 阅读 · 0 评论 -
多态性有哪些
C++支持两种多态:编译时多态(静态)、运行时多态(动态)(1)编译时的多态(静态):在C++中主要体现在函数模板和函数重载上。很多地方说函数重载不算多态,但是看函数重载的本质,重载函数的调用地址在编译期就绑定了,因此一定意义上也是编译时的多态;(2)运行时的多态(动态):主要是通过虚函数来实现的。体现在子类重新定义父类的成员函数(即虚函数,加上关键字virtual);父类指针根据赋给它的...原创 2018-08-11 20:55:59 · 1307 阅读 · 0 评论 -
C++的四种类型转换
C++中,四个与类型转换相关的关键字:static_cast、const_cast、reinterpret_cast、dynamic_cast一、 static_cast特点:静态转换,在编译处理期间。 应用场合:主要用于C++中内置的基本数据类型之间的转换,如把int转换为char,但是没有运行时类型的检测来保证转换的安全性。 上行转换(派生类---->基类)是安全...原创 2018-08-11 22:09:46 · 205 阅读 · 0 评论 -
VS2013 产品密钥 – 所有版本
VS2013 产品密钥 – 所有版本 Visual Studio Ultimate 2013 KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9Visual Studio Premium 2013 KEY(密钥):FBJVC-3CMTX-D8DVP-RTQCT-92494Visual Studio Professional 2013 KEY(密钥): XD...转载 2018-08-07 17:00:00 · 11305 阅读 · 6 评论 -
数组分段和最大值最小问题
参考博文:https://blog.youkuaiyun.com/littlestream9527/article/details/12242155原始问题:假设有m个房间,清洁每个房间耗时用一个数组表示,10、20、30、40、50、60、70、80、90,安排n个清洁工,将连续的房间分成n份,每部分耗时求和,其最大值为此种分法的总耗时。求最快的耗时是多少。例如3个清洁工的话,10 20 30 40 ...原创 2018-08-12 15:48:06 · 3278 阅读 · 0 评论 -
内存对齐的原则
1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储。 2:结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小...转载 2018-08-12 20:09:19 · 169 阅读 · 0 评论 -
广联达2019C++软件开发
一、先做两道编程题,直接在A4纸上手写代码,题目很简单【20min】1.对一升序排列的数组,找到两数之和等于指定数N,任意一组输出即可;2.对于升序排列的数组,找到其下标与该数大小相等的数,找到任意一个输出即可,至少给出两种解法;二、面试1、简单自我介绍;2、面向对象的作用:封装,继承,多态3、多态的意义4、深拷贝浅拷贝的区别:这里答完之后,感觉面试官是想让我说基于对象...原创 2019-01-05 16:46:54 · 1569 阅读 · 0 评论 -
C++ 虚函数的缺省参数问题
转自https://blog.youkuaiyun.com/qtyl1988/article/details/37604011前些日子,有个同学问我一个关于虚函数的缺省参数问题。他是从某个论坛上看到的,但是自己没想通,便来找我。现在分享一下这个问题。先看一小段代码: #include <iostream> using namespace std; class A { pu...转载 2018-10-12 20:35:20 · 2128 阅读 · 1 评论 -
软件开发笔试题
4、有两个线程,最初 n=0,一个线程执行 n++; n++; 另一个执行 n+=2; 问,最后可能的 n 值?()A. 1B. 2C. 3D. 4解析:【BCD】大家要知道 C语言中的 ++ 和 += 并不是原子操作,而是通过多条微程序组成的,因此 ++ 和 += 在执行过程中可能被中断的第一种可能情况:现在假设两个线程没有并行顺序执行的那么结果显然是 4。第二种可能情况:再假设现...转载 2018-09-28 21:09:22 · 8950 阅读 · 0 评论 -
Coursera C++程序设计——第三周笔记(2)
第三课——静态成员变量和静态成员函数(1)概念 静态成员变量概念:普通成员变量每个对象有各自的一份,而静态成员变量仅有1份,为所有对象共享。sizeof运算符不会计算静态成员变量。(静态成员) 静态成员变量不是放在对象的内部,而在外面,是被所有对象共享的。class CMyclass{ int n; static int s;}; ...原创 2019-01-18 10:52:32 · 241 阅读 · 0 评论 -
Coursera C++程序设计——第二周笔记
第二课——引用int n = 100;const int &r = n;r = 200; //编译错n = 300; //没问题不能通过常引用去修改其引用的内容第三课——const关键字定义常量指针不能通过常量指针修改其指向的内容int n, m;const int *p = &n;*p = 5; //编译错n = 4; /...原创 2019-01-08 21:43:47 · 565 阅读 · 0 评论 -
Coursera C++程序设计——赋值运算符的重载
赋值运算符只能重载为成员函数class String{ private: char * str; public: String():str(NULL){} //构造函数,初始化成员列表初始化为NULL const char * c_str() { return str; } char* operator= (const char* s); ...原创 2019-01-24 15:30:58 · 273 阅读 · 0 评论 -
C++中内存的分配
一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全...原创 2018-08-01 12:07:04 · 157 阅读 · 0 评论