c++学习
万无引力-
这个作者很懒,什么都没留下…
展开
-
C语言的移位运算
C语言:对于左移,其右端自动补零对于右移,正数左端补零,,负数左端补1(也即是算数移位,,不同的编译器,也可能进行逻辑移位)原创 2020-04-05 17:22:47 · 243 阅读 · 0 评论 -
C/C++关于预编译的一些理解
原文章链接:https://www.baidu.com/link?url=6qcdFoRTkxCxTVetFeOYK7ar7fMroNJfT3hXcRI4apn-pld6x6qJPFH-iQJkYUN4rJ4mXl1eSYZDNrFyw5uJYCYZ0-jftyxvjPPncJ6RqD7&wd=&eqid=aa0fcb2600007185000000065e82cb91...转载 2020-03-31 13:10:37 · 334 阅读 · 0 评论 -
c源文件中要包含自己的头文件
引言: 我们经常在c工程中发现,源文件中要包含自己的头文件。一直以来,都不知道为什么这样做。现在,我知道了。以前的认知:我认为,.c文件没有必要包含自己的.h文件。.h文件包含.c文件中定义的函数和全局变量的声明,.h文件就是.c文件提供的对外接口文件。既然.h文件就是.c文件提供的对外接口文件,那么.c文件就没必要包含自己的.h文件了(.h文件是对外提供用的...转载 2020-03-26 16:48:22 · 768 阅读 · 0 评论 -
C/C++程序的内存分配
一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)全局变量...转载 2020-04-23 15:08:37 · 118 阅读 · 0 评论 -
文件中的EOF是什么
1、EOF定义在/usr/include/stdio.h文件中: 从上面EOF的定义我们可以看出 EOF 本质上就是一个值为-1的常量! 2、在Linux系统之中,EOF根本不是一个字符,而是当系统读取到文件结尾,所返回的一个信号值(也就是-1)。至于系统怎么知道文件的结尾,资料上说是通过比较文件的长度。 3、fgetc()不仅是遇到文件结尾时返回EOF...转载 2020-04-22 15:53:58 · 2363 阅读 · 0 评论 -
C语言文件定位函数rewind和fseek
文件定位函数rewind和fseek移动文件内部位置指针的函数主要有两个,即 rewind() 和 fseek()。rewind() 用来将位置指针移动到文件开头,前面已经多次使用过,它的原型为:void rewind ( FILE *fp );fseek() 用来将位置指针移动到任意位置,它的原型为:int fseek ( FILE *fp, long offset, in...转载 2020-04-22 15:50:30 · 634 阅读 · 0 评论 -
C语言fread和fwrite
对文件格式化读写函数 fprintf 与 fscanf 而言,尽管它可以从磁盘文件中读写任何类型的文件,即读写的文件类型可以是文本文件、二进制文件,也可以是其他形式的文件。但是,对二进制文件的读写来说,考虑到文件的读写效率等原因,还是建议尽量使用 fread 和 fwrite 函数进行读写操作。fread 与 fwrite 函数的原型如下面的代码所示:size_t fread(void *...转载 2020-04-22 15:42:15 · 487 阅读 · 0 评论 -
C语言中的预编译指令(不完善)
1void 可以用来定义空类型指针,该指针不指向任何类型,但是在需要时可以转化为任何类型2嵌入式C语言在编译的时候,会先对程序中一些特殊的命令进行预处理,然后将预处理的结果和源程序一起再进行编译预处理包括"宏定义","条件编译","文件包含"三大类宏定义:#define PI 3.14 //用PI代替3.14#define S(r) PI*r*r ...原创 2020-03-26 16:46:54 · 144 阅读 · 0 评论 -
C语言命令行参数
argc是指传入参数的个数,argv[]是一个指针数组,指向传递给程序的每个参数#include <stdio.h>int main( int argc, char *argv[] ) { if( argc == 2 ) { printf("The argument supplied is %s\n", argv[1]); } ...原创 2020-04-28 12:16:27 · 150 阅读 · 0 评论 -
c++中的构造函数
子类不会继承父类的构造方法子类创建对象时,先执行父类无参的构造方法,然后执行子类的构造方法,如果父类只有有参数的构造方法,则子类必须显示调用此带参构造方法继承构造函数不会继承参数的默认值struct A{ A(int i) {} A(double d,int i){} A(float f,int i,const char*...原创 2020-04-28 12:12:33 · 127 阅读 · 0 评论 -
c++中的匿名对象
匿名对象只存在于构造该对象的那行代码,离开构造匿名对象的哪行代码后立即调用析构函数class Some { int n; public: Some(int s){n=s;} ~Some(){ cout<< "destroy\n"; } int ret(){return n;} }; int main(int argc...原创 2020-04-28 12:12:08 · 628 阅读 · 0 评论 -
c++的using关键字
用法一:using namespace 命名空间;该用法能直接在程序中使用using后所跟的命名空间的元素,而不用每次要使用时指定命名空间。using namespace std;//这样就可以直接用std命名空间里的元素了,如cout,string等,否则要指定命名空间,std::cout,std::string等。用法二:给某一类型定义别名,和typedef作...转载 2020-04-28 12:11:40 · 541 阅读 · 0 评论 -
c++语言基础知识总结
一、程序书写tipsC++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。使用静态类型的编程语言是在编译时执行类型检查,而不是在运行时执行类型检查。标准的 C++ 由三个重要部分组成:核心语言,提供了所有构件块,包括变量、数据类型和常量,等等。 C++ 标准库,提供了大量的函数,用于操作文件、字符串等。 标准模板库(STL),提供了大量的方法,用于操...原创 2020-04-28 12:11:21 · 2656 阅读 · 1 评论 -
c++标准库
C++ 标准库可以分为两部分:标准函数库:这个库是由通用的、独立的、不属于任何类的函数组成的。函数库继承自 C 语言。 面向对象类库:这个库是类及其相关函数的集合。C++ 标准库包含了所有的 C 标准库,为了支持类型安全,做了一定的添加和修改。标准函数库标准函数库分为以下几类:输入/输出 I/O 字符串和字符处理 数学 时间、日期和本地化 动态分配 其他 宽字符...原创 2020-04-28 12:16:03 · 202 阅读 · 0 评论 -
C语言基础知识总结
目录一、程序书写tips二、multi-sources处理请看这篇文章三、关键字四、输入流和输出流(1)输出:(2)输入五、数据类型(1)简单数据类型(2)容器数据类型(1)数组(2)字符串(2)枚举(3)指针(3)结构体(4)位域(4)共用体(3)数据类型转换(4)存储类型六、运算符(1)优先级七、控制流...原创 2020-04-28 12:10:12 · 853 阅读 · 0 评论 -
c++的struct和class区别
在C++中我们可以看到struct和class的区别并不是很大,两者之间有很大的相似性。那么为什么还要保留struct,这是因为C++是向下兼容的,因此C++中保留了很多C的东西。一.首先看一下C中struct1.struct的定义struct A{ int a; int b; //成员列表};注意:因为struct是一种数据类型,那么就肯定不能定...转载 2020-04-27 17:48:46 · 1391 阅读 · 0 评论 -
c++构造函数详解
一 构造函数的种类(1)无参数构造函数如果创建一个类你没有写任何构造函数,则系统会自动生成默认的无参构造函数,函数为空,什么都不做 只要你写了一个某一种构造函数,系统就不会再自动生成这样一个默认的构造函数(2)重载构造函数构造函数可以有各种参数形式,一个类可以有多个构造函数,前提是参数的个数,类型,顺序不同(3)拷贝构造函数拷贝构造函数的参数表为对象本身的引用,用于根据一...原创 2020-04-27 17:48:18 · 961 阅读 · 0 评论 -
c++中virtual的用法
(1)虚函数的用法用于子类重写父类函数//父类class base{ ...};//子类class sub:public base{ ...};//主函数main(){ //指针p的指向静态绑定为base,想要解除静态绑定,需要把base中的函数用virtual修饰 base* p = new sub(); /...原创 2020-04-27 17:46:32 · 547 阅读 · 0 评论 -
c++抽象类
如果类中有函数被声明为纯虚函数,则这个类就是抽象类 纯虚函数是通过在声明中使用 "= 0" 来指定的,如下所示 抽象类不能被实例化对象,由它派生的子类实现class Box{ public: // 纯虚函数 virtual double getVolume() = 0; //= 0 告诉编译器,函数没有主体 private: ...原创 2020-04-27 17:46:08 · 147 阅读 · 0 评论 -
c++中的匿名对象
匿名对象只存在于构造该对象的那行代码,离开构造匿名对象的哪行代码后立即调用析构函数class Some { int n; public: Some(int s){n=s;} ~Some(){ cout<< "destroy\n"; } int ret(){return n;} }; int main(int argc...原创 2020-04-27 17:45:12 · 362 阅读 · 0 评论 -
c++的explicit和implicit修饰符
explicit修饰符代表显式implicit修饰符代表隐式类构造函数默认是隐式implicit的,在隐式情况下,类构造函数会发生隐式转换,即以下两种写法是相互转换的CxString string2 = 10; CxString string2(10);使用explicit修饰类构造函数,会避免这种转换,(如果有重载构造函数,则修饰任意一个,全部都会生效)explicit...原创 2020-04-27 17:44:46 · 439 阅读 · 0 评论 -
C++对于函数的理解
(1)函数的本体是()(2)可以在此基础上加上一个函数名fun()(3)同数组一样,函数名表示函数的首地址(4)可以任意地指定函数地返回值:void* (),只是没有函数名,可以void*fun(),这是指针函数函数指针是指向函数的指针变量,即重点是一个指针。 格式:类型说明符(*函数名)(参数) int ...原创 2020-04-27 17:44:01 · 275 阅读 · 0 评论 -
c++STL(标准模板库)
C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。组件 描述 容器(Containers) 容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。 算法(Algorithms) 算法作用...原创 2020-04-27 17:41:23 · 79 阅读 · 0 评论 -
c++11新特性
姊妹篇:请参考这篇博客 1、关键字及新语法 1.1、auto关键字及用法 1.2、nullptr关键字及用法 1.3、for循环语法 2、STL容器 2.1、std::array 2.2、std::forward_list 2.3、std::unordered_map 2.4、std::unordered_se...转载 2020-04-27 17:40:10 · 1553 阅读 · 0 评论 -
C++中的文件操作
需要用到 C++ 中另一个标准库fstream数据类型 描述 ofstream 该数据类型表示输出文件流,用于创建文件并向文件写入信息。 ifstream 该数据类型表示输入文件流,用于从文件读取信息。 fstream 该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取...原创 2020-04-28 12:11:54 · 723 阅读 · 0 评论 -
c++里的可变参数
C++允许定义形参个数和类型不确定的函数,不确定的形参可以使用省略号“…”int add(int firstParam, … )使用要求:省略号必须在参数列表的末尾。 运行时,才能确认参数的具体个数与类型。 只能顺序访问可变参数,无法后退访问 无法提供任何安全性保证如果使用省略号,传递可变数量的参数时使用va_arg、va_start、va_end 和 va_list等...转载 2020-04-26 15:19:12 · 997 阅读 · 0 评论 -
c++中的异常处理
C++ 异常处理涉及到三个关键字:try:try块中的代码标识将被激活的特定异常,并由throw跳出try块,它后面通常跟着一个或多个 catch 块。 throw:在try的函数体内放置throw语句,通常后接字符串,throw会把该字符串隐式传递给catch的形参,并强制跳转到catch catch:catch的形参在收到throw的传值后,执行catch函数体内的内容,完毕后...原创 2020-04-26 15:18:48 · 412 阅读 · 0 评论 -
namespace名字空间
一、为什么使用命名空间考虑一种情况,当我们有两个同名的人,Zara,在同一个班里。当我们需要对它们进行区分我们必须使用一些额外的信息和它们的名字,比如这个区域,如果它们生活在不同的区域或者它们的母亲或父亲的名字,等等。在您的C++应用程序中也会出现同样的情况。例如,您可能正在编写一些具有名为xyz()函数的代码,并且还有另一个可用的库,它也具有相同的xyz()函数。现在编译器无法知道...转载 2020-04-26 15:18:30 · 282 阅读 · 0 评论 -
c++的泛型编程及模板
一..模板函数(2)用模板定义函数template <typename T0,typename T1,typename T2>T0 print(T1 arg1, T2 arg2) //arg1和arg2是两个形参{ cout<<arg1<<" "<<arg2<<endl; }(3)调用模板函数...原创 2020-04-26 15:18:01 · 123 阅读 · 0 评论 -
c++与时间相关的函数和信号处理
(1)Sleep()函数Linux 用#include <unistd.h>和sleep(),Windos 用#include <windows.h>和Sleep()。 Sleep 括号里的时间,在 Windows 下是以毫秒为单位,而 Linux 是以秒为单位(2)信号处理信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX...原创 2020-04-26 15:17:26 · 192 阅读 · 0 评论 -
C++11 bind和function用法
(1)functionfunction是一个template,定义于头文件functional中。通过function<int(int, int)> 声明一个function类型,它是“接受两个int参数、返回一个int类型”的可调用对象,例如function<int(int, int)> fun;则fun就是这样一个对象。function<int(int, in...原创 2020-04-26 15:16:47 · 242 阅读 · 0 评论 -
C语言与c++的auto不同之处
(1)C语言:是个缺省修饰符,表明是自动变量,存放再动态存储区(2)c++C++11新标准引入了auto 类型说明符,用auto修饰的变量表明是自动类型,可接受表达式的赋值例如下面这三种写法是等价的:auto func_1 = []() {cout << "hello world" << endl; };std::function<vo...原创 2020-04-26 15:16:12 · 279 阅读 · 0 评论 -
c++的强制类型转换
c++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast,主要运用于继承关系类间的强制转化,语法为:static_cast<new_type> (expression)dynamic_cast<new_type> (expression...转载 2020-04-26 15:15:34 · 168 阅读 · 0 评论 -
c++多线程
目录一、创建线程(1)简单的栗子:(2)创建一个执行有参函数的线程:(3)类成员函数的线程:二、关闭线程(1)加入式(join())(2)分离式(detach())三、获取线程ID四、转移线程所有权五、进程与线程c++11提供了一个新的头文件<thread>提供了对线程函数的支持的声明原型:template<clas...原创 2020-04-26 15:14:59 · 124 阅读 · 0 评论 -
c++的lvalue和rvalue以及引用
目录(0)lvalue和rvalue(1)左值引用(2)右值引用(3)move()(0)lvalue和rvalue下面是我对这两个单词字面的意思的猜测:lvalue估计来源于left value。 在赋值语句中lvalue = rvalue;位置处于左边。就是可以修改的值。 rvalue估计来源于right value。处于赋值语句右边,是只读的不可修改的值。 lv...原创 2020-04-26 15:12:44 · 535 阅读 · 0 评论