随笔分类 - C++ Primer
摘要:6.1.1 局部变量 变量分类 变量类型 作用域 生命期 初始化 全局对象 整个程序 整个程序 默认初始化 自动对象 块作用域 声明时自动创建,出作用域后自动销毁 默认初始化 局部静态对象 块作用域 整个程序 值初始化 自动变量会多次创建和初始化,全局对象和局部静态变量只会创建和初始化一次 值初始化
阅读全文
摘要:6.5.1 默认实参 某些函数有这样一种形参,在函数的很多次调用中它们都被赋予一个相同的值,此时,我们把这个反复出现的值称为函数的默认实参(default argument)。调用含有默认实参的函数时,可以包含该实参,也可以省略该实参。 例如,我们使用string对象表示窗口的内容。一般情况下,我们
阅读全文
摘要:基本介绍 和其他变量一样,形参的类型决定了形参和实参交互的方式。 当形参是引用类型时,我们说它对应的实参被引用传递(passed by reference)或者函数被传引用调用(called by reference)。和其他引用一样,引用形参也是它绑定的对象的别名;也就是说,引用形参是它对应的实参
阅读全文
摘要:6.4.1 重载与const 重载与const形参 参数调用时会忽略顶层const,而不会忽略底层const // 重复声明了lookup void lookup(int i); void lookup(const int i); // 重复声明了lookup void lookup(int *i)
阅读全文
摘要:static_cast 1.用来改变基本类型:一般是高精度转低精度 显示地告诉程序阅读者和编译器,不考虑高精度想低精度转换时造成的精度损失 #include<iostream> using namespace std; int main(){ double d = 2.1; int i = 6; i
阅读全文
摘要:整型在运算时小类型会自动转换为大类型【保证精度】 右值给左值赋值时,会被转换为左值类型 int i; long long j; int res = i+j; //i转换为long long,i+j的类型是long long,给res初始化时又转为int 有符号与无符号整型预算时,谁的类型大,容得下结
阅读全文
摘要:4.1.1 基本概念 函数观点 操作符可视为一个函数,用参数,副作用,返回值来分析它 如cout<<i<<j<<endl中>>操作符 参数:ostream对象和值(value) 副作用:将值输入到ostream中,这里是输入到标准输出(屏幕)中 返回值:返回左边的ostream对象,继续与右边的值结
阅读全文
摘要:遍历二维数组的三种方式 #include<iostream> #include<string> #include<vector> using namespace std; int main(){ //初始化二维数组 int map[3][4] = {}; for(int cow = 0; cow <
阅读全文
摘要:3.4.0 为什么要有迭代器 为了遍历与处理容器(container)中的数据元素 因为不是所有容器向string和vector一样支持下标,但每种容器都支持用迭代器来实现遍历和随机访问 3.4.1使用迭代器 迭代器使用与指针类似,都指向一个对象,并都用解引用符*来取出指向的对象 迭代器指向容器中的
阅读全文
摘要:3.3.0 模板(Template) vector说明 vector是含有相同类型的对象的集合(a collection of objects which have the same type) 引用(reference)不是对象,所以无法建立引用的vector vector本身不是类,而是一个类模
阅读全文
摘要:3.2.1 定义和初始化 直接初始化(direct initialization):直接调用对应的构造函数,对于string而言,不带“=”即为直接初始化,主要就是列表初始化(间2-2-1),可用圆括号或者大括号 拷贝初始化(copy initialization):间接调用构造函数(一般是拷贝构造
阅读全文
摘要:目录头文件怎么起作用避免头文件被重复引用避免头文件被重复引用的方法:条件编译1. 给每个头文件添加一个预编译变量(preprocessor variable)作为标记(Label)2. 使用头文件保护符:ifdef/ifndef3. 关于使用条件编译的必要性的探讨总结:创建自己的头文件 建议直接看总
阅读全文
摘要:2.5.1 类型别名(Type Alias) typedef 语法 typedef double wages; //wages 是 double的别名 typedef char * pstring; //ptring 是 char *的别名 注意点:const修饰符修饰指针本身 const pstr
阅读全文
摘要:建议直接看总结和比较,如有需要再看2.4.1—2.4.3了解细节 2.4.1 const之于基本类型(base type) 含义 以const int i = 43为例 i的值不可修改 因此在定义i时==必须初始化== 任何试图修改i的操作都会报错 const int i = get_size();
阅读全文
摘要:2.2.1 变量定义:列表初始化(list initialization) 定义一个整型i并初始化为0 #include<iostream> using namespace std; int main(){ //下面四种初始化方式都可以 int i = 0; int i = {0}; //c++新特
阅读全文
摘要:2.3.1 引用(References) 此处讨论的引用为左值引用(lvalue reference) 引用就是对象的别名【引用本身不是对象,不分配内存空间】 对引用的操作会作用在它绑定的对象上 引用不能重新绑定对象,所有在定义引用时必须初始化 #include<iostream> using na
阅读全文
摘要:2.1.1 算术类型(Arithmetic Types) 概览 分类 整型与浮点型 整型: short\int\long\long long\char 浮点型: float\double 有符号和无符号 表示范围有差异,如 char: -128-127; unchar: 0-255 存储 单位转换
阅读全文
摘要:程序的编译与执行 编译环境 IDE 命令行 程序的编译 g++ filename : 不指定生成的执行文件名,默认命名为 “a.out” g++ -o exename filename : 指定生成的执行文件名 程序的执行 filename ./exename : use relative path
阅读全文