
c++ 侯捷学习视频
爱学习爱生活的程序猿
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c++面向对象高级编程 学习十七 const, new, delete
文章目录常量成员函数new和delete常量成员函数常量成员函数是不改变成员数据。当成员函数的const和non-const版本同时存在时,const object只能调用const版本,non-const object只能调用non-const版本。因此,可以看出,const是函数签名的一部分。当成员函数只有const版本时,const object和non-const object均能...原创 2020-04-02 15:26:48 · 274 阅读 · 0 评论 -
c++面向对象高级编程 学习十六 vptr和vtbl
文章目录当一个类中有一个或多个虚函数时,内存中会多一个虚指针(vptr,virtual pointer),指向一个虚表(vtbl,virtual table)父类有虚函数,则子类一定有虚函数在下图示意图中,我们可知,B继承A,C继承B。A有两个虚函数,B继承A则也有两个虚函数,同时B对虚函数vfunc1进行了重写,同理,C继承B,则C也有两个虚函数,C对虚函数vfunc1也进行了重写。故在...原创 2020-04-02 11:24:29 · 345 阅读 · 0 评论 -
c++面向对象高级编程 学习十五 组合&继承关系下的构造和析构
文章目录继承关系组合关系继承和组合继承关系构造由内而外,析构由外而内,内即是父类组合关系A拥有B,构造由内而外,析构由外而内,内即是B继承和组合构造和析构顺序如图:...原创 2020-04-01 17:38:15 · 246 阅读 · 0 评论 -
c++面向对象高级编程 学习十四 引用
文章目录referencereference的常见用途reference变量有三种形式:值,指针,引用int x=0; //值int* p=&x;//指向整型的指针,地址,指针在之后的程序中可以指向其他变量int& r=x;//引用,此处表示 r代表x,在之后的程序中r只能一直代表x,不能再代表其他变量,此时r x都是0int x2=5;r=x2;//此时r x都是...原创 2020-04-01 14:13:19 · 207 阅读 · 0 评论 -
c++面向对象高级编程 学习十三 数量不定的模板参数,auto,for
文章目录数量不定的模板参数autoranged-base for数量不定的模板参数void print() {}//... 表示参数的数量不定template<typename T, typename...Types>void print(const T&firstArg, const Types&...args) { cout << fir...原创 2020-04-01 11:42:00 · 293 阅读 · 0 评论 -
c++面向对象高级编程 学习十二 模板
模板特化:模板是一种泛化的形式,特化是将参数类型进行指定,写出特化的版本,当在调用下图cout<<hash()(1000);的时候,由于特化中有struct hash{ }的版本,因此会直接调用特化部分。模板偏特化:模板偏特化即进行了局部的特化,分为个数的特化和范围的特化,而模板特化是进行了全局的特化。1.个数的偏:绑定的时候应从左往右进行绑定2.范围的偏:比如泛化是...原创 2020-03-25 12:29:49 · 175 阅读 · 0 评论 -
c++面向对象高级编程 学习十一 类模板、函数模板、成员模板
namespace经验谈:团队中函数或类的名字可能会冲突,因此使用namespace进行区分。类模板:template<typename T>函数模板:template<class T>,此处class可改成typename函数模板在使用的时候,不必指明类型,因为函数模板是去调用该函数,会在调用的时候传入参数,编译器会对函数模板进行参数推导,而类模板则需指明...原创 2020-03-25 11:56:16 · 199 阅读 · 0 评论 -
c++面向对象高级编程 学习十 function-like classes
本节是设计一个class,使它的行为像一个函数。如果一个东西能接受小括号()操作符,那么这个东西就称之为函数,或像函数的东西。下图为三个函数对()的重载,这三个类均为像函数的类,它们可接受()操作符,标准库中,仿函数都会去继承奇特的base classes....原创 2020-03-25 11:18:31 · 244 阅读 · 0 评论 -
c++面向对象高级编程 学习九 pointer-like classes
c++的class设计出来有两种形式,一种像指针,一种像函数智能指针里包含普通指针,要写 * 和 -> 的函数sp->method();//sp-> 经 T* operator*() const 函数,得到px//由于 箭头符号(->)作用下去得到的结果会继续用箭头符号作用下去//sp->method();即可转换为px->method();迭代...原创 2020-03-25 10:54:07 · 181 阅读 · 0 评论 -
c++面向对象高级编程 学习八 non-explicit-one-argement-ctor
explicit(显式的):作用是"禁止单参数构造函数"被用于自动类型转换non-explicit:class Fraction{public: Fraction(int num,int den=1) :m_numerator(num),m_denominator(den){} Fraction operator +(const Fraction& f){ retur...原创 2020-03-24 17:56:47 · 304 阅读 · 0 评论 -
c++面向对象高级编程 总目录
本文是对学习侯捷视频 c++面向对象高级编程系列博客的目录总索引。c++面向对象高级编程 学习一 不带指针的类:访问私有成员变量的方式,内联inline,常量成员函数,构造函数,值传递,引用传递,操作符重载c++面向对象高级编程 学习二 带指针的类:拷贝构造,赋值构造,析构函数c++面向对象高级编程 学习三 堆、栈和内存泄漏:堆,栈,内存泄漏,new,delete,array new,...原创 2020-03-24 10:55:11 · 394 阅读 · 2 评论 -
c++面向对象高级编程 学习七 转换函数
转换函数:对象A和对象B之间的互相转换。class Fraction{public: Fraction(int num,int den=1) :m_numerator(num),m_denominator(len){} operator double()const{ return (double)(m_numerator/m_denominator); }privat...原创 2020-03-24 10:42:12 · 151 阅读 · 0 评论 -
c++面向对象高级编程 学习六 虚函数
虚函数:在成员函数前面加上virtual,函数就变成了虚函数继承函数:子类可以调用父类的函数,叫做继承了函数,即函数的调用权三种函数:non-virtual 函数: 你不希望 derived class 重新定义 (override, 重写) 它.virtual 函数: 你希望 derived class 重新定义 (override, 重写) 它 , 且你对它已有默认定义 。...原创 2020-03-08 17:34:27 · 268 阅读 · 1 评论 -
c++面向对象高级编程 学习五 组合、委托与继承
组合 composition 表示has aqueue类中有一个deque容器,这种关系叫做 组合queue中的六个函数都是调用c的函数完成的template <class T>class queue {...protected:deque<T> c; // 底層容器public:// 以下完全利用 c 的操作函數完成bool empty() con...原创 2020-03-08 16:35:05 · 429 阅读 · 0 评论 -
c++面向对象高级编程 学习四 静态、类模板、函数模板
静态static:静态数据和静态函数,在内存中只有一份,不会随着创建对象的数目的增加而增加static数据:比如银行的account类中,账户名是普通数据,100个对象会有100个账户名,但利率都是相同的,因此利率可以设置为staticstatic函数:static函数和其他一般成员函数相比,static函数没有this指针,因此它不能处理类中的一般数据,只能处理static数据static...原创 2020-03-08 15:29:46 · 502 阅读 · 0 评论 -
c++面向对象高级编程 学习三 堆、栈和内存泄漏
栈,是存在于某作用域的一块内存空间。在函数体内声明的任何变量,其所使用的内存空间均来自于栈。堆,是指由操作系统提供的一块global内存空间,程序可动态分配获得若干内存空间块。new操作符生成的对象所占用的内存空间即是从堆中动态分配所得。c1所占用的空间来自栈,c2来自堆。c1在作用域结束之后消失,内存会被自动清理。c2是heap object,其生命在被delete时结束,若其作用域结...原创 2020-03-06 17:35:39 · 179 阅读 · 0 评论 -
c++面向对象高级编程 学习二 带指针的类
带指针的类,必须要自己写拷贝构造和赋值构造class String{public:String(const char* cstr = 0);String(const String& str);String& operator=(const String& str);~String();char* get_c_str() const { return m_da...原创 2020-03-06 17:16:32 · 312 阅读 · 0 评论 -
c++面向对象高级编程 学习一 不带指针的类
复数类 complex 是一个不带指针的类,其声明如下:class complex{public:complex(double r=0,double i=0):re(r),im(i){}complex& operator +=(const complex&);double real()const{return re;}double imag()const{retur...原创 2020-03-04 18:10:03 · 668 阅读 · 0 评论