![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++
侯捷C++面向对象高级编程笔记
如此肤浅
爱程序的猿
展开
-
C++学习8 | 复合、委托、继承
复合(Composition)下图中,类 queue (队列)包含一个类 deque (双端队列),并借用 deque 已经实现的一些功能来实现 queue 所需要的东西。简而言之,类 queue 中包含一个 deque。 template <class T, class Sequence = deque<T>>class queue{ ...protected: Sequecte c; //底层容器public: //以下完全利用 c 的操作函数完成 b原创 2021-11-04 21:22:18 · 204 阅读 · 0 评论 -
C++学习7 | static
非静态① 非静态函数、变量,一个对象拥有一份数据。② 在对象调用非静态函数时,从C语言的角度理解的话,可以理解为:向函数中传入了执行对象的指针(即,this)。静态① 静态函数、变量,所有对象使用同一份数据(在堆内存中)。② 静态函数与非静态函数的区别在于,静态函数没有this指针,因此不能像非静态函数那样去存取对象里面的数据,因此它只能存取静态的数据。什么时候使用静态的数据呢?比如,有一个银行账户系统,有100万个用户开户,因此需要有100万个账户对象。但利率不应该与账户有关,100.原创 2021-11-04 20:45:42 · 590 阅读 · 0 评论 -
C++学习6 | 内存管理(堆、栈)
堆是存在于某个作用域的一个内存空间。例如,当你调用函数,函数本身会形成一个栈用来放置它所接收的参数,以及返回地址。栈由操作系统提供的一个全局的内存空间,程序可动态分配。内存管理生命周期:栈对象:离开堆的作用域,会调用对象的析构函数,内存就会被自动释放。{ Complex c1(1,2);//花括号就是c1所在的作用域}静态对象:其生命在作用域之后仍然存在,直到整个程序结束。{ static Complex c2(1, 2);}全局对象:其生命在整个程序..原创 2021-11-04 19:56:54 · 656 阅读 · 0 评论 -
C++学习 5 | 操作符重载
什么是操作符重载C++ 里面操作符就是一种函数,而用户可以重定义或重载 C++ 内置的运算符。例如,实现两个复数相加的功能需要实部、虚部分别相加。//语法:返回值类型 operator op (参数);//示例:returnType operator+(const type& a, const type& b)方式一:成员函数的方式重载编译器中,所有的成员函数都带有一个隐藏的参数 this,谁调用该函数,谁就是 this。在执行c2 += c1时,操作符 += 作用于原创 2021-10-28 11:00:37 · 276 阅读 · 0 评论 -
C++学习 4 | 参数传递与返回值 | const的用法 | 引用的用法
修饰函数的const类里面的函数分为要 改变数据 和 不改变数据 两种,不会改变数据的函数,在加上 const。class complex{public: complex(double r=0, double i=0):re(r), im(i) {} double real() const {return re;} double imag() const {return im;} private: double re, im;}如果没有加const,在创建对象时可能会出现问题!!!原创 2021-10-28 09:41:08 · 229 阅读 · 0 评论 -
C++学习 3 | 构造函数 | 初值列 | 构造放在private中 | 单例模式
构造函数创建对象时,自动调用的函数。函数名称与类名相同,没有返回值。class complex{public: complex(double r=0, double i=0) //参数可以有默认值(默认值不是构造函数特有) : re(r), im(i) //构造函数特有的初值列 {} double real() const {return re;} //函数定义 double imag() const {return im;} //函数定义private: double re原创 2021-10-27 20:43:10 · 704 阅读 · 0 评论 -
C++学习 1 | 头文件 | #ifndef
d下面展示一些 内联代码片。// A code blockvar foo = 'bar';dsfsd int a;// An highlighted blockvar foo = 'bar';原创 2021-10-27 20:00:51 · 1485 阅读 · 0 评论 -
C++学习 2 | inline(内联)函数
inline 函数函数若定义在 class 里面,则自动成为 inline 函数。class complex{public: double imag(const complex& x); //函数声明 double real() const {return re;} //函数定义 double imag() const {return im;} //函数定义private: double re, im;}在函数定义时,返回类型前加上关键字inline,即把该函数指定为内联。原创 2021-10-27 20:00:30 · 375 阅读 · 0 评论