读C++Primer的笔记
自二月开始接触C++Primer,每次的知识点都是从书上总结自己不熟悉的小知识点,带着去学习C++
Patrick-Star
我用双手改变世界!
展开
-
C++知识点,第十三章:拷贝构造
一丶拷贝控制函数知识点1:在定义一个类时,我们可以显式或隐式的定义在此类型的对象拷贝、赋值、移动、销毁是做什么,主要通过五种特殊的成员函数来完成这些操作:拷贝构造函数、拷贝复制运算符、移动构造函数、移动复制运算符。析构函数知识点2:拷贝和移动构造函数定义了当用同类型的一个对象初始化本对象时做什么。拷贝和移动赋值运算符定义了将一个对象赋予同类型的另一个对象时做什么。析构函数定义了当此类型对象销毁时的...原创 2018-03-16 22:17:57 · 305 阅读 · 0 评论 -
学习C++语言的注意点!!!!
这些话谨送给那些准备学习C++的程序员!1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为 他们很难而我们自己是初学者所以就不看; 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑...转载 2018-03-02 22:36:18 · 267 阅读 · 0 评论 -
C++知识点5
一丶语句空语句:最简单的语句,当程序中在语法上需要一条语句,但是逻辑上却不需要时,就可以用到空语句使用空语句时,必须加上注释,使得代码阅读者知道语句是有意义的。 复合语句(也称为“块”):指用花括号括起来的语句和声明的序列。一个块就是一个作用域,在块中引入的名字只能在块内部以及嵌套在块中的子块访问注意:块不以分号结尾。二丶符号用法在Windows中:'\r' 回车,回到当前行的行首,而不会换到下...原创 2018-03-04 22:13:47 · 452 阅读 · 0 评论 -
C++ Primer (第十章:泛型算法)
一丶因为这些算法只作用于迭代器,而不直接对容器进行操作.本阶段所学到的一些泛型算法:find()搜索,accmulate()求和,equal()相等判断,fill()、fill_n()赋值,back_insert()插入操作,copy()拷贝,sort()排序,unique()重排并消重复二丶reverse是改变容器容量的,并没有改变其大小,用resize()算法只是产生了一个插入迭代器,然后使用...原创 2018-03-10 16:38:14 · 237 阅读 · 0 评论 -
什么是预编译?
什么是预编译预编译就是指程序执行前的一些预处理工作,主要指#表示的。何时需要预编译1.总是使用不经常改动的大型代码体。2.程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。两种格式区别编辑文件包含有两种格式,分别是:#include "file" 和 #include 这两格式的区别在于:原创 2018-01-30 21:09:46 · 1500 阅读 · 0 评论 -
const和#define的区别
const与#define相比,有何优点①define只是简单的字符串替换,没有类型检查。而const有对应的数据类型,是要进行判断的,可以避免一些低级的错误。 ②const常量可以进行调试的,define是不能进行调试的,因为在预编译阶段就已经替换掉了#define RADIUS 100const float RADIUS = 100(1) 编译器处理方式不同原创 2018-01-30 21:11:17 · 135 阅读 · 0 评论 -
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”
答:首先,extern是C/C++语言中表明函数和全局变量作用范围的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。extern "C"是连接申明(linkage declaration),被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。作为一种面向对象的语原创 2018-02-04 19:21:46 · 581 阅读 · 0 评论 -
typedef 和#define的简单区别
typedef char * String_t;#define String_d char *1.typedef char *String_t 定义了一个新的类型别名,有类型检查2.#define String_d char * 只是做了个简单的替换,无类型检查3.前者在编译的时候处理,后者在预编译(预处理)的时候处理4.同时定义多个变量的时候有区别,主要区别在于这种使用方式String_t a,...原创 2018-02-20 12:51:12 · 214 阅读 · 0 评论 -
C++小知识1
1. 对象是内存的一块区域,具有某种类型。变量是命名了的对象。2. &运算符,取地址运算符3. *运算符, 解引用运算符。解引用一个指针将返回该指针所指的对象,为解引用的结果赋值也就是为指针所指的对象赋值。4. 域解析符(::):编译器应该从操作符左侧名字std所示的作用域中寻找右侧的那个名字cin 例:std::cin 要使用命名空间std...原创 2018-02-27 21:59:46 · 197 阅读 · 0 评论 -
C++小知识2
继C++小知识1五.string类中的size()函数和length()函数的区别?(1)size 语法: size_type size();size()函数返回字符串中现在拥有的字符数。(2)长度(length)语法: size_type length();length()函数返回字符串的长度. 这个数字应该和size()返回的数字相同.vector有size()函数得到大小,strin...原创 2018-02-28 21:59:10 · 285 阅读 · 0 评论 -
C++小知识3
继C++小知识2十.数组和指针int ia[3][4] = { 0,1,2,3,4 ,5,6,7,8,9,10,11}; for (int (*row)[4] = ia; row != ia + 3; row++) { cout << "row:" << (row) << endl; //输出row首元素的指针,当程序使用多维数组的名字时,会自动将其转换成指...原创 2018-03-01 21:30:08 · 138 阅读 · 0 评论 -
C++知识点4
继C++知识点3十一.下标和指针int ia[4] = {};表达式*(ia + 3)计算ia前进4个元素后的新地址, 解引用该结果指针的效果等价于表达式ia[3].很多情况下,使用数组的名字其实用的就是一个指向数组首元素的指针,例如当对数组使用下标运算符的时候,编译器会自动执行这个转换。ia【0】是一个使用了数组名字的表达式,对数组执行下标运算其实是对指向数组元素的指针执行下标运算。十二.复合表...原创 2018-03-03 20:59:34 · 157 阅读 · 0 评论 -
C++知识点6
一丶构造函数知识点1:构造函数—特殊的成员函数,用来控制对象的初始化过程。无返回类型,可重载,不能被声明为const.知识点2:若无,则有默认的构造函数,是编译器自己隐式的定义的。又称合成的默认构造函数。知识点3:某些类是不能使用默认的构造函数的,以下三个原因:1:在未声明任何构造函数的前提下,类内对象的初始化将不受控制2:合成的默认构造函数可能会造成不必要的错误,如若没有类内初始值来初始化成员,...原创 2018-03-06 21:12:32 · 211 阅读 · 0 评论