C++基础知识
文章平均质量分 91
或许对了
我曾七次鄙视自己的灵魂
展开
-
如何在C/C++中调用Shell脚本
如何在C/C++中调用Shell脚本缘起在Linux平台下开发程序时,经常要处理一些锁碎的事情,比如删除某个目录下符合某种特征的文件,安装程序到某个目录下,打包备份一个程序,这些在Linux中很容易用shell来处理。在开发后台程序时,也经常要处理程序的安装、升级、备份,通常这些功能用shell脚本实现。所以不可避免的,要在程序中调用shell命令或shell脚本。之前考虑过这个问题,但没有深究。最近在维护一个项目时,要在C++程序中调用shell脚本来实现程序的升级和备份,所以花时间研究了一下,遂成本转载 2021-01-12 11:52:08 · 4148 阅读 · 0 评论 -
C++/C中int main( int argc, char* argv[] ) 中arg和argv参数的解释
一、main()的 声明格式 在示例程序中经常可以看到argc和argv这两个参数 ,在调试代码过程中遇到main函数为int main( int argc, char* argv[] )这种类型时往往会报错,或者是运行起来了但命令窗口一闪而过,没有出来结果。网上关于这方面的资料也有点乱,在看浅墨大大一书发现其中有关于这一方面的讲解甚为详细,抑制不住要与大家分享的冲动,现结合网上内容并予以实验,整理如下: 带形参的main函数,如 main( int argc, char原创 2020-05-20 17:58:41 · 723 阅读 · 0 评论 -
C++知识记录1
3.malloc和new1.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。但它们都可用于申请动态内存和释放内存。2.对于非内部数据类型的对象而言,用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数...原创 2020-04-17 14:42:27 · 101 阅读 · 0 评论 -
C++对象内存布局
https://www.cnblogs.com/haoyul/p/7287719.htmlhttps://ivanzz1001.github.io/records/post/cplusplus/2018/05/31/cpluscplus_virtual_function#3-%E5%AF%B9%E8%B1%A1%E5%86%85%E5%AD%98%E5%B8%83%E5%B1%80原创 2020-04-16 15:04:43 · 108 阅读 · 0 评论 -
单独说说const关键字
const是C++ 中常用的类型限定符,但我在工作中却发现,许多人使用它仅仅是想当然,这样有时也会用对,但在某些微妙的场合,可就没有那么幸运了。究其实质原由,大多因为没有搞清const 类型限定符的本质。这里我将对const 类型限定符进行一个分析,溯其本源究其本质,希望对大家理解const 有所帮助。C++中为什么要引入 constC++ 的作者当初是出于怎样的目的...转载 2020-03-27 11:21:46 · 119 阅读 · 0 评论 -
【系列】浅析C++11新特性-转自王书博
吐血整理C++11新特性本文整理一些C++11的新特性,欢迎补充。auto关键字在C++11之前,auto关键字用来指定存储期。在新标准中,它的功能变为类型推断。auto现在成了一个类型的占位符,通知编译器去根据初始化代码推断所声明变量的真实类型。各种作用域内声明变量都可以用到它。例如,名空间中,程序块中,或是for循环的初始化语句中。auto i = 42; // i is...转载 2020-03-25 13:06:55 · 272 阅读 · 0 评论 -
C++11 之 override
1 公有继承 公有继承包含两部分:一是"函数接口"(interface),二是"函数实现"(implementation) 如 Shape 类中,三个成员函数,表示三种继承方式:class Shape {public: virtual void Draw() const = 0; // 1) 纯虚函数 virtual void Error...转载 2020-03-25 13:00:16 · 182 阅读 · 0 评论 -
enum与int的相互转换
如何正确理解enum类型?例如:enum Color { red, white, blue};Color x;我们应说x是Color类型的,而不应将x理解成enumeration类型,更不应将其理解成int类型。我们再看enumeration类型:enum Color { red, white, blue};(C程序员尤其要注意!)理解此类型的最好的方...转载 2020-03-25 11:36:56 · 1435 阅读 · 0 评论 -
[转]C++ explicit关键字详解
单参数构造函数单参数构造函数作为隐含的类型转换符号C++中,一个参数的构造函数(或者除了第一个参数外其余参数都有缺省值的多参构造函数),承担了两个角色。用于构建单参数的类对象隐含的类型转换操作符.例如一个类A的构造函数A(int i)就是,既可以用来作为构造器,又可以实现隐式转换A a=1;因为1可以通过构造函数A(int i)转换为一个类A的对象。#include <...转载 2020-03-24 18:00:51 · 140 阅读 · 0 评论 -
C++学习路线必读4本书
导读书籍是人类进步的阶梯。学习语言也是一样,一味的看学习视频其实效率真的不高。只有踏踏实实的看书,不仅可以提高自己学习能力,还可以提升成就感。其实我觉得小伙伴在看我的文章的时候,可能其实心中已经有了答案,但是还是不太确定。什么入门,进阶,高级的书籍一大堆。其实到底哪一个适合自己的。心中也许会有疑问,这些书我都需要读吗?这么多我啥时候读完啊。而且技术的书籍价格普遍也比较贵。也正是因为这些劝退了...转载 2020-03-24 10:09:31 · 724 阅读 · 0 评论 -
C++构造函数体中赋值和列表初始化的差异
初始化和赋值的差异对于类的构造函数,有如下两种形式:第一种是不使用初始化列表的:class B{public: B(const A & item){ _a = item; }; ~B(){};private: A _a;};第二种是使用初始化列表的,形如:class B{public: B(con...原创 2020-03-22 08:20:04 · 251 阅读 · 0 评论 -
C++类成员的列表初始化的必要性及效率提升
在使用C++编程的过程当中,常常需要对类成员进行初始化,通常的方法有两种:第一种方法:CMYClass::CSomeClass(){ x=0; y=1;}第二种方法:CSomeClass::CSomeClass() : x(0), y(1){}本文将要探讨这两种方法的异同以及如何使用这两种方法。 从技术上说,第二种方法比较好,但是在大多数情...转载 2020-03-22 07:59:58 · 974 阅读 · 0 评论 -
C++ 类中的static, const, &引用类型变量的初始化的思考
参考:https://blog.bccn.net/zpcdbc/15060https://blog.csdn.net/cyqllfh/article/details/13295919staticconst兼有static、const的双重特点,故不能初始化static、const数据成员的形式,自然不能拿来初始化staticconst。即不能直接初始化(当然不包括后面讲到的特...原创 2020-03-22 00:38:28 · 863 阅读 · 0 评论 -
C++初始化列表与构造函数体中赋值区别
在以下三种情况下需要使用初始化成员列表:一,需要初始化的数据成员是对象的情况;二,需要初始化const修饰的类成员;三,需要初始化引用成员数据;原因:C++可以定义引用类型的成员变量,引用类型的成员变量必须在构造函数的初始化列表中进行初始化。对于类成员是const修饰,或是引用类型的情况,是不允许赋值操作的,(显然嘛,const就是防止被错误赋值的,引用类型必须定义赋值在一起),...原创 2020-03-21 23:43:46 · 224 阅读 · 0 评论 -
C++11 构造函数的列表初始化
感谢原作者分享,转自: C++类成员的初始化 建议查看原文1、关于构造函数1)用构造函数确保初始化对于一个空类class Empty { };编译器会自动声明4个默认函数:构造函数,拷贝构造函数,赋值函数,析构函数(当然,如果不想使用自动生成的函数,就应该明确拒绝),这些生成的函数都是public且inline。构造函数对数据成员进行初始化,使用未初始化值可能导致无法预知的...转载 2020-03-21 20:53:33 · 896 阅读 · 0 评论 -
C++中类成员变量在初始化列表中的初始化顺序
引子:我们知道,C++中类成员变量的初始化顺序与其在类中的声明顺序是有关的。先看代码:class TestClass1{public: TestClass1() { cout << "TestClass1()" << endl; } TestClass1(const TestClass1&) { cout <...转载 2020-03-21 16:43:28 · 270 阅读 · 0 评论 -
c++ 内联函数
1.内联函数在C++中我们通常定义以下函数来求两个整数的最大值:int max(int a, int b){ return a > b ? a : b;}为这么一个小的操作定义一个函数的好处有:① 阅读和理解函数 max 的调用,要比读一条等价的条件表达式并解释它的含义要容易得多② 如果需要做任何修改,修改函数要比找出并修改每一处等价表达式容易得多③ 使...转载 2020-01-19 19:19:00 · 222 阅读 · 0 评论 -
C++继承小知识点
5.C++子类继承父类后子类的大小#include <iostream>using namespace std;class A {private: int a;};class B:public A{private: int b;};int main(){ cout<<sizeof(A)<<endl; cout<&...转载 2020-01-14 16:19:54 · 509 阅读 · 0 评论 -
C++ string 用法详解
转自:https://www.byvoid.com/zhs/blog/cpp-stringC++ string 详解任何人对本文进行引用都要标明作者是Nicolai M.Josuttis///////////////////////////////////////////////////////////////////////////////////C++ 语言是个十分优秀的语言,...转载 2020-01-02 19:01:04 · 879 阅读 · 0 评论 -
C++中临时对象及返回值优化
什么是临时对象? C++真正的临时对象是不可见的匿名对象,不会出现在你的源码中,但是程序在运行时确实生成了这样的对象.通常出现在以下两种情况:(1)为了使函数调用成功而进行隐式类型转换的时候。 传递某对象给一个函数,而其类型与函数的形参类型不同时,如果可以通过隐式转化的话可以使函数调用成功,那么此时会通过构造函数生成一个临时对象,当函数返回时临时对象...转载 2019-12-30 16:01:55 · 642 阅读 · 0 评论 -
C++隐式转换构造函数与explicit关键字
explicit研究explicit是C++中的关键字,不是C语言中的。英文直译是“明确的”、“显式的”意思。出现这个关键字的原因,是在C++中有这样规定的基础上:当定义了只有一个参数的构造函数时,同时也定义了一种隐式的类型转换。先看类型转换。隐式转换的场景等于号与构造函数比如你有一个类的对象A:class A{public: A(int i) { ...转载 2019-12-27 19:54:15 · 277 阅读 · 0 评论 -
C++临时对象
要理解临时对象,可能先需要搞清楚lvalue,rvalue的区别:每个表达式的结果都是lvalue或rvalue。lvalue指的是内存中持续存储数据的一个地址。而rvalue是临时存储的表达式结果。之所以称为lvalue,是因为所有产生lvalue的表达式都可以出现在赋值语句中等号的左边,如果表达式结果不是lvalue,则他是rvalue。(引用自深入理解visual c++入门经典Page...原创 2019-12-26 17:10:24 · 137 阅读 · 0 评论 -
C++强大背后
原文:https://www.cnblogs.com/miloyip/archive/2010/09/17/1828449.html在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++。C++是一门通用编程语言,支持多种编程范式,包括过...转载 2019-12-26 16:59:08 · 431 阅读 · 0 评论 -
C++策略编写知识点 之 C++ 内存回收
在编写C++策略前有些 基础知识还是需要知道的,不求孔乙己式的精通, 最起码要知道这些规则。 以下为转载资料 C++内存对象大会战 如果一个人自称为程序高手,却对内存一无所知,那么我可以告诉你,他一定在吹牛。用C或C++写程序,需要更多地关注内存,这不仅仅是因为内存的分配是否合理直接影响着程序的效率和性能,更为主要的是,当我们操作内存的时候一不小心就会出现问题,而且很多时候,这...转载 2019-12-26 11:24:12 · 204 阅读 · 0 评论 -
Sun Studio 12 Update 1:C++ 用户指南
前言第 1 部分 C++ 编译器第 1 章 C++ 编译器1.1 Sun Studio 12 Update 1 C++ 5.10 编译器的新特性和新功能1.2 x86 特殊注意事项1.3 针对 64 位平台进行编译1.4 二进制兼容验证1.5 标准一致性1.6 C++ 自述文件1.7 手册页1.8 本地语言支持第 2 章 使用 C++ 编译器2.1 入门...转载 2019-12-26 11:19:02 · 371 阅读 · 0 评论 -
C++11 - the new ISO C++ standard
http://www.stroustrup.com/C++11FAQ.htmlhttps://docs.microsoft.com/en-us/cpp/cpp/welcome-back-to-cpp-modern-cpp?redirectedfrom=MSDN&view=vs-2019https://github.com/changkun/modern-cpp-tutorial...转载 2019-12-25 19:53:48 · 1070 阅读 · 0 评论 -
【转发】C++ 并发编程(从C++11到C++17)
转自:https://paul.pub/cpp-concurrency/#id-%E5%B9%B6%E8%A1%8C%E7%AE%97%E6%B3%95自C++11标准以来,C++语言开始支持多线程模型。借助多线程模型,我们可以开发出更好的并发系统。本文以C++语言为例,讲解如何进行并发编程。并尽可能涉及C++11,C++14以及C++17中的主要内容。为什么要并发编程大型的软件项...转载 2019-12-25 17:12:18 · 512 阅读 · 0 评论 -
【转】C++11中值得关注的几大变化
转自赖勇浩(http://laiyonghao.com)声明:本文源自 Danny Kalev 在 2011 年 6 月 21 日发表的《The Biggest Changes in C++11(and Why You Should Care)》一文,几乎所有内容都搬了过来,但不是全文照译,有困惑之处,请参详原文(http://www.softwarequalityconnection.com/...转载 2019-12-25 16:54:51 · 147 阅读 · 0 评论 -
【转】C++11 中值得关注的几大变化(详解)
转自陈皓https://coolshell.cn/articles/5265.htmlhttp://www.hawkers.cc/upload/2017/11/%E7%8E%B0%E4%BB%A3C++%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D.pdf源文章来自前C++标准委员会的Danny Kalev的The Biggest Changes in C...转载 2019-12-25 15:44:21 · 117 阅读 · 0 评论 -
【转】C++中的返回值优化
C++中的返回值优化在这边文章里用到了以下编译器和操作系统,大家请自行安装$ uname -arLinux debian 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06) x86_64 GNU/Linux$ lsb_release -aNo LSB modules are available.Distributor ID...转载 2019-12-25 11:57:28 · 244 阅读 · 0 评论 -
【转载】C++机试STL、树、图用法最全总结
感谢原作者分享,原链接地址:https://xuanxuanblingbling.github.io/life/study/2019/03/20/STL/简述STL底层说明C++ STL 的实现:容器 实现vector 底层数据结构为数组 ,支持快速随机访问list 底层数据结构为双向链表,支持快速增删deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL...转载 2019-09-09 15:19:34 · 1470 阅读 · 0 评论 -
【转载】c++ primer 这本书看完了,再看什么书提高自己?
SegmentFaulthttps://segmentfault.com/q/1010000002593186首页 问答 专栏 课程 圈子 发现搜索立即登录免费注册热门标签全部javascriptphppythonjavamysqliosandroidnode.jshtml5linuxc++css3gitgolangrubyvimdockermongodb登录免广...原创 2019-09-06 17:47:09 · 494 阅读 · 0 评论 -
【转载】C++中引用和指针的区别
下面用通俗易懂的话来概述一下: 指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const、volatile等等。见下图,所示指针的含义: 引用-引用是一个对象的别名,主要用于函数参数和返回值类型,符号X&表示X类型的引用。见下图,所示引用的含义: 2、指针和引用的区别 首...转载 2019-09-03 14:36:41 · 101 阅读 · 0 评论 -
【转载】C++进阶必读书籍
感谢原作者https://blog.csdn.net/chenqiai0/article/details/18763441结合一些我的学习经历,希望对于想学C++的人有些帮助. 大家有什么好想法望提出我老师最初是从C语言教起的,用的是潭浩强的<<C程序设计>>这本书,那时候命令执行都是在CMD里实现,用的编译器是turboc最经常用到的就是 printf cin ...转载 2019-09-02 12:15:41 · 300 阅读 · 0 评论 -
【转载】大牛整理C++学习之路(15)---C++ 资源大全(太全了)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/qq_38906523/article/details/78317116C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。...转载 2019-09-02 12:07:27 · 559 阅读 · 0 评论 -
【转载】STL迭代器iterator和指针的区别总结
指针和iterator都支持与整数进行+,-运算,而且其含义都是从当前位置向前或者向后移动n个位置 指针和iterator都支持减法运算,指针-指针得到的是两个指针之间的距离,迭代器-迭代器得到的是两个迭代器之间的距离 通过指针或者iterator都能够修改其指向的元素通过上面这几点看,两者真的很像,但是两者也有着下面的几个不同地方 cout操作符可以直...转载 2019-08-28 15:34:47 · 664 阅读 · 0 评论