
C++ primer 学习笔记
Soar-
这个作者很懒,什么都没留下…
展开
-
C++ Primer学习总结 第15章 面向对象程序设计
1、 构造基类和派生类其中A类是基类,B类是派生类。继承关系中,每个类必须控制它自己的成员初始化过程。即B类必须使用A的构造函数来初始化基类部分。也就是B的构造函数必须是重写过的(不是继承A的)。派生类可以覆盖基类的虚函数,但是也可以不覆盖(而使用基类的)。基类的静态成员:基类定义一个静态成员,那么基类与所有派生类都共同拥有这仅有的一个静态成员。#include<bits/stdc...原创 2019-03-15 15:05:34 · 396 阅读 · 0 评论 -
C++ 四种 类型转换
转载自:https://www.cnblogs.com/Allen-rg/p/6999360.htmlC++ 类型转换(C风格的强制转换):在C++基本的数据类型中,可以分为四类:整型,浮点型,字符型,布尔型。其中数值型包括 整型与浮点型;字符型即为char。(1)将浮点型数据赋值给整型变量时,舍弃其小数部分。(2)将整型数据赋值给浮点型变量时,数值不变,但是以指数形式存储。(...转载 2019-05-06 16:31:37 · 1730 阅读 · 0 评论 -
C++primer学习总结 第8章 IO库
1.IO对象无拷贝和赋值进行IO操作的函数通常以引用方式传递和返回流。读写对象会改变IO状态,所以传递和返回的引用不能是const的。2.查看流的条件状态int main() { int x; cin>>x; cout << "good : " << cin.good() << endl; cout << "f...原创 2019-05-06 16:12:46 · 161 阅读 · 0 评论 -
第1-2章 变量和基本类型
C++ Primer学习总结 第1-2章 变量和基本类型1.关于%f 和 %lf 在C++98 和 C++11中的 异同。int main() { printf("%f",0.123456789); return 0;}两者在scanf中相同,在printf中:c++11: lf:long double f:double floatc++98: lf:doub...原创 2019-05-03 23:17:23 · 228 阅读 · 0 评论 -
C++ Primer学习总结 第3章 字符串,向量和数组
C++ Primer学习总结 第3章 字符串,向量和数组1、如何用string读取一整行内容getline(cin,s);2、string +运算符3、复杂数组4、关于s.c_str();为什么会依然输出abcde呢? 因为原先的字符串数组只能保存5个字符,现在新的字符串有6个字符,那么string类就会申请新的够大的空间重新保存”ABCDEF”,而以前的字符...原创 2019-05-03 22:00:12 · 164 阅读 · 0 评论 -
C++ Primer学习总结 第4章 表达式
C++ Primer学习总结 第4章 表达式1、左值与右值当一个对象被用作右值的时候,用的是对象的内容(值);当对象被用作的左值得时候,用的是对象的身份(地址)。int a = 1; int *p; decltype(*p) b = a; cout << b << endl; a = 11; cout << b << endl;//...原创 2019-05-03 21:23:09 · 189 阅读 · 0 评论 -
C++ Primer学习总结 第5章 语句
C++ Primer学习总结 第5章 语句1、switch中的case标签必须是整形常量表达式,不能是变量或者非整型。不要忘记加break。2、switch语句中case语句初始化了一个变量时要注意(与goto类似):int x = 2; switch(x){ case 1: int b;//不能赋值,否则会被跳过 //string s;隐式初始化,不行 b...原创 2019-05-03 20:33:21 · 138 阅读 · 0 评论 -
C++ Primer学习总结 第6章 函数
第6章 函数1. 局部静态变量生存周期:在整个程序的执行路径第一次经过对象定义语句时初始化,并且直到整个程序终止时才被销毁,在此期间即使对象所在函数结束执行也不会对它有影响。2.形参顶层const会被忽略,当形参有顶层const时,传给他常量对象或者非常量对象都是正确的,因此不可以重载不可以只有顶层const区别。void print(int x){ cout << x;...原创 2019-05-02 20:57:23 · 229 阅读 · 0 评论 -
C++ Primer学习总结 第10章 泛型算法
泛型算法1、find()泛型只读算法std::vector<int> v{1,2,3,4,5}; auto it = find(v.begin(),v.end(),1); cout << *it << endl;2、accumulate()对所给元素范围求和。第三个参数决定返回类型。 std::vector<int > v...原创 2019-04-03 17:28:03 · 189 阅读 · 0 评论 -
C++ lambda表达式及其原理
C++ 11中引入了新的lamdba表达式,使用也很简单,我最喜欢的是不用给函数取名称,每次给函数取名称都感觉自己读书太少~1、lambda表达式lambda表达式可以理解为一个匿名的内联函数。和函数一样,lambda表达式具有一个返回类型、一个参数列表和一个函数体。与函数不一样的是lambda必须使用尾置返回类型。一个lambda表达式表示一个可调用的代码单元。语法:[capture li...原创 2019-04-03 17:11:51 · 10660 阅读 · 3 评论 -
C++ Primer学习总结 第7章 类
第七章 类1.引入const成员函数C++类的常量对象无法调用非const成员函数的,如果想让常量对象调用某个成员函数,必须声明为const:class A{public: int x; A(int x):x(x){} void print()const{//必须为const函数 cout << x; }};int ma...原创 2019-04-12 01:09:29 · 187 阅读 · 0 评论 -
C++ Primer学习总结 第9章 顺序容器
第九章 顺序容器1、顺序容器的构造函数可接受大小参数,但是如果该容器存储的元素没有默认构造函数,需要我们提供元素初始化器。class A{public: A(int v):v(v){}//无默认构造函数 int v;};int main() { vector<A> v(10,1);//可以 //vector<A> v1(10);//不可以值提供一个元素数...原创 2019-04-02 17:34:06 · 371 阅读 · 0 评论 -
C++ Primer学习总结 第14章 操作重载与类型转换
第14章 操作重载与类型转换1、可以直接调用一个重载的运算符函数如果我们对于一个运算符比如+号,既有重载的成员函数,又有重载的非成员函数,那么此时直接使用+号,那么就会出现错误。因为编译器不知道要使用哪个运算符。class A{public: A(int v):v(v){} int v; A operator + (A b){ return A(v+b.v+1); }};...原创 2019-04-01 16:29:26 · 246 阅读 · 0 评论 -
C++ Primer学习总结 第13章 拷贝控制
第13章 拷贝控制1、拷贝构造函数 P440如果一个类的构造函数第一个参数是自身类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数。拷贝初始化 和 直接初始化如果初始化的时候使用 = 来初始化一个对象,右侧对象拷贝到左侧对象中(函数传递实参给非引用形参,列表初始化),那就是拷贝初始化。使用最匹配的构造函数,那就是直接初始化。2、拷贝初始化发生在:传递实参对象给非引用形...原创 2019-03-27 15:53:45 · 304 阅读 · 0 评论 -
C++ Primer学习总结 第12章 动态内存
1、申请使用shared_ptrint main() { shared_ptr<string> sp;//定义一个智能指针,但是sp现在还没申请空间 string s("123"); // *sp = s; //无效 // cout << *sp; sp = make_shared<string>(3,'a');//在动态内存中分配...原创 2019-03-18 01:17:43 · 215 阅读 · 0 评论 -
智能指针的简单实现
智能指针使用引用计数简单实现:#include <iostream>using namespace std;template<class T>class SmartPtr{public: SmartPtr(T *p); ~SmartPtr(); SmartPtr(const SmartPtr<T> &...原创 2019-06-15 16:12:18 · 219 阅读 · 0 评论