![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 67
binary~
所有的努力最终都会绕个大圈回报给你。
展开
-
C++中istream_iterator和ostream_iterator的源码分析
在一篇博客当中无意间发现了和的使用,感觉用法很神奇,就专门去研究了一下,觉得还挺有意思的,所以就专门写了一篇博客来聊聊这两个迭代器的实现,一下为gnu2.9版本的源码。原创 2022-12-02 09:43:21 · 882 阅读 · 0 评论 -
类和对象—多态(一)
多态多态的概念地址早绑定地址晚绑定原理剖析多态的优点以及实例多态的概念多态分为两类静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态静态多态和动态多态的区别静态函数的函数地址早绑定——编译阶段确定函数地址动态函数的函数地址晚绑定——运行阶段确认函数地址下面通过案例进行讲解多态地址早绑定#include<iostream>using namespace std;class animal{public: void speak()原创 2022-02-27 16:31:14 · 191 阅读 · 1 评论 -
继承的详解
继承基础继承得好处:减少重复代码语法:class 子类 : 继承方式 父类子类也称为:派生类父类也称为:基类eg:#include<iostream>using namespace std;//公共部分class BasePage{public: void test() { cout << "java,C++,Python" << endl; }};//继承class java : public BasePage{public原创 2022-02-23 03:25:33 · 1057 阅读 · 0 评论 -
运算符重载
运算符重载加号运算符重载左移运算符重载递增运算符重载赋值运算符重载关系运算符重载函数调用运算符重载运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型加号运算符重载作用:实现两个自定义类型的相加的运算如果现在我们有一个类如下:class Person{public: Person() { m_a = 10; m_b = 30; }public: int m_a; int m_b;};如果我们想实现 Person p1; Pers原创 2022-01-05 01:49:44 · 110 阅读 · 0 评论 -
友元和const修饰成员函数
文章目录const修饰成员函数友元1.全局函数做友元2.类做友元3.成员函数做友元const修饰成员函数常函数:1.成员函数后加const后我们称为这个函数为常函数2.函数内不可修改成员函数属性3.成员属性声明时加关键字mutable后,在常函数中依然可以修改代码如下:class Person{public: //在成员函数后加const,修饰的是this的指向,让指针指向的值也不可以被修改 void showPerson() const { //m_A = 100;常函数内不可原创 2022-01-01 23:51:03 · 599 阅读 · 0 评论 -
静态成员函数和this指针
静态成员静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员静态成员分为:1.静态成员变量 所有对象共享同一份数据 在编译阶段分配内存 类内声明,类外初始化示例:#include<iostream>using namespace std;class Person{public: static int m; // 所有对象共享同一份数据};int Person::m = 0;// 类内声明,类外初始化2.静态成员函数所有对象共享一个函数原创 2021-12-28 23:40:27 · 2418 阅读 · 0 评论 -
类初始列表和类对象作为类成员
目录初始化列表类对象作为类成员初始化列表作用:C++提供了初始化列表语法,用来初始化属性语法:构造函数():属性1(值1),属性2(值2).....{ }传统初始化操作:#include<iostream>using namespace std;class Person{public: //传统初始化操作 Person(int a, int b, int c) { m_A = a; m_B = b; m_C = c; } int m_A; int原创 2021-12-28 16:21:43 · 423 阅读 · 0 评论 -
构造函数和析构函数
目录构造函数和析构函数的概述构造函数详解构造函数的调用方法1.括号法2.显示法3.隐式转换法拷贝构造函数的调用时机1.使用一个已经创建完毕的对象来初始化一个新对象2.值传递的方式给函数参数传值3.以值方式返回局部对象构造函数的调用规则深拷贝与浅拷贝构造函数和析构函数的概述类的数据成员不能在类的声明时候初始化,为了解决这个问题? 使用构造函数处理对对象的初始化。构造函数是一种特殊的成员函数,与其他函数不同,不需要用户调用它,而是创建对象的时候自动调用。析构函数是对象不再使用的时候,需要清理资源的时候调原创 2021-12-28 01:26:53 · 180 阅读 · 0 评论 -
类和对象——封装
封装是C++面向对象三大特征之一原创 2021-12-27 17:19:23 · 583 阅读 · 0 评论 -
C++中的引用和高级函数
在我们使用函数重载时,要避免使用默认参数,避免歧义。原创 2021-12-27 01:32:29 · 619 阅读 · 0 评论 -
程序的内存模型
内存四区内存分配模型内存四区的意义程序运行前代码区:全局区:程序运行后栈区:堆区:内存分配模型 C++程序执行时,将内存大方向划分为四个区域 1.代码区:存放函数二进制代码,有操作系统进行管理的 2.全局区:存放全局变量和静态变量及其常量 3.栈区:由编译器自动分配释放,存放函数的参数值,局部变量等。 4.堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收。内存四区的意义不同区域存放的数据,赋予不同生命周期,给我们更大的灵活编程程序运行前在程序编译后,生成exe可执原创 2021-12-26 19:24:08 · 134 阅读 · 0 评论