![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
IT_iverson
欢迎大家一起交流学习,点击一篇博客进入分类中方便自己阅读!
展开
-
初识C++
一.概念C语言:是一种面向过程的结构化编程语言,适合小型软件开发设计,大型软件的话会显得力不从心。C++:在C语言的基础上发展而来,其保留了C语言的优点,也弥补了c语言的缺陷,其和C语言最本质的区别是它是面向对象的编程,这里的面向过程和面向对象的区别需要自己慢慢体会二.对比1.C++相对于C语言的优点首先说一下C语言的缺点这样才能凸显C++的有点1.不支持代码重用,导致程序原创 2017-08-01 19:34:17 · 670 阅读 · 0 评论 -
拷贝构造函数
1.什么是拷贝构造函数呢?答:它是一种特殊的构造函数,用来完成同一类的对象初始化对象或者构建对象。注意:他和普通构造函数一样,如果你自己不写系统就会调用默认拷贝函数,只不过它只能完成最基本的对象初始化对象的功能罢了。class stu{ public: stu(const stu &m)//定义了一个拷贝构造函数 { ;// }private: int a;};如上原创 2017-08-09 18:55:01 · 641 阅读 · 0 评论 -
C++对C的函数扩展
一.内联函数在函数的前面加上关键字inlineinline void display(){ cout<<"hehe"<<endl;}int main(){ display(); return 0; } 说明 ①inline必须和函数定义写在一起,如果只是声明的话系统不一定按内联函数处理 ②C++编译器直接将内联函数的函数体插入到函数调原创 2017-08-08 13:38:18 · 430 阅读 · 0 评论 -
C++中的引用
引用是C++新引进的概念在C语言中是不存在的,接下里啊重点介绍引用。说到引用首先得提一个概念:变量名,变量名是指上是一段连续储存空间的别名,算是一个标号,门牌号,程序中通过变量来申请并命名内存空间。通过变量的名字来使用内存空间。1.引用的概念引用:相当于一个变量的别名,相当于给这个变量的内存空间重新起了第二个名字。用法:如下代码int main(){ int a = 10;原创 2017-08-07 21:57:09 · 1468 阅读 · 1 评论 -
C++多态
一.问题引出如果子类中定义了与父类中原型相同的函数会发生什么?函数重写:在子类中定义与父类中原型相同的函数,函数重写只发生在父类与子类之间。测试代码如下class parent{private: int a;public: parent(int a) { this->a = a; } void print() { cout << "a=" << a <<原创 2017-09-09 21:42:40 · 556 阅读 · 0 评论 -
模版总结
1.函数模版类型形参转换 一般在调用模版函数的时候,不同的实参数据类型会使模版产生不同数据类型的函数实例,而对实参不进行类型转换。但是编译器会进行下面两中转换上面的话怎么理解呢?举个例子:1、const转换:接受const引用或const指针的函数分别用非const对象的引用或指针来调用,无需产生新的实例化。如果函数接受非引用类型,形参类型和实参都忽略const,即,无论传原创 2017-10-22 21:05:22 · 435 阅读 · 0 评论 -
STL模拟实现vector
首先给出所需要实现的函数接口和类的封装templateclass Vector{public: Vector();//无参构造函数 Vector(const T* array, size_t size);//有参数构造函数 Vector(const Vector & v);//拷贝构造函数 Vector& operator=(const Vector& s);//赋值运算符重载原创 2017-10-31 13:29:13 · 528 阅读 · 0 评论 -
C++类型萃取
一.问题的引入首先我们如果要写一个拷贝函数,代码如下:templatevoid Copy(T *dst, T *src, size_t size){ memcpy(dst, src, sizeof(T)*szie);}但是这个代码拷贝内置类型的没有问题,但是如果是自定义类型的,就牵扯到深浅拷贝问题,就行不通了,所以我们需要做的就是在代码内部判断传过来的数据类型,从而进行不同的操作。原创 2017-10-23 12:52:23 · 734 阅读 · 0 评论 -
STL模拟实现List+迭代器
List的底层数据结构的实现就是双向循环链表,下面给出结点的封装,简易迭代器的封装,还有头指针的封装和相关功能的实现和测试的结果1.结点的封装代码如下:templatestruct ListNode//定义结点的类{public: ListNode *_pre;//后指针 ListNode *_next;//前指针 T _data;//储存数据public: ListNod原创 2017-11-02 17:09:54 · 693 阅读 · 0 评论 -
菱形继承和虚函数
此篇博客主要介绍菱形虚拟继承和虚函数的混合情况下的模型分析。一首先介绍一下虚函数的实质内容代码如下class A{public: int a; virtual void fun1() { cout << "A::fun1 "<< endl; }};class B :public A{public: int b; virtual void fun1()//函数原创 2017-10-11 17:28:37 · 1848 阅读 · 0 评论 -
简单的浅拷贝和深拷贝
一.浅拷贝的引出首先我们看下面的代码class stu{private: char *p; int len;public: stu(const char *src)//定义构造函数 { len = strlen(src); p =(char *)malloc(len + 1); strcpy(p, src); } ~stu()//析构函数 { if (原创 2017-08-10 22:36:08 · 498 阅读 · 0 评论 -
C++_异常问题
一.异常的基本语法原创 2017-09-19 17:21:03 · 424 阅读 · 0 评论 -
升级版的C语言-->C++
C++相对于C语言不但继承 了C语言的大部分语法功能再次基础上还增强优化了很多的功能,接下来我就一一列举!1.register关键字功能增强解释://C语言的register的作用请求编译器将变量放在寄存器里面速度快,但是变量不能取地址 //C++中对依然支持register,但是变量可以取地址,因为C++编译器有自己的优化方式,当检测当程序有register变量要原创 2017-08-06 23:28:26 · 889 阅读 · 0 评论 -
泛型编程之函数模板
一.概念泛型编程:通俗的讲就是模版。用一种通用的模板来写程序。模板:又分为函数模版和类模版,这篇博客主要说的是函数模版。函数模版:实际上是建立一个和函数,函数的类型和函数的形参类型不具体指定,用虚拟的类型来代表,这个通用的函数就称为函数模版。(注意:凡是函数体相同的函数都可以用这个模版来代替,不必定义多个函数,只需要在模版中定义一次即可,再调用函数时系统会自己根据实参的类型类取代实原创 2017-09-14 08:47:03 · 564 阅读 · 0 评论 -
纯虚函数和抽象类
一.纯虚函数和抽象类的概念:用代码显示:class Figure//抽象类{public: //提供一个统一的界面接口 virtual void fun() = 0;//纯虚函数};注意一下几点: Figure c1;//错误,抽象类不能建立对象 Figure *p = NULL;//正确,抽象类可以声明自己的指针 Figure fun();//错误,抽象类不原创 2017-09-13 17:16:13 · 517 阅读 · 0 评论 -
泛型编程之类模版
一.概念类模版和函数模版的定义和使用类似,上篇博客已经介绍了函数模版,有时,有两个或者类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类注意:1.类模版用于实现所需数据的类型参数化 2.类模版在表示如数组,表,图等数据结构显得提别重要 3.这些数据结构表示和算法不收所包含的元素类型的影响二.单个类模版语法看如下原创 2017-09-15 15:03:50 · 335 阅读 · 0 评论 -
函数重载重写重定义
一.首先问题的引出看如下代码class parent{public: void fun() { cout fun()..." << endl; } void fun(int i) { cout fun(int i) " << i << endl; } void fun(int i, int j) { cout fun(int i,int j) " << i原创 2017-09-11 17:04:43 · 708 阅读 · 0 评论 -
运算符重载
运算符重载:自己的理解就是定义一个成员函数或者友元函数对运算符进行新的功能,使其可以完成更加复杂的数据类型的操作。下面介绍几种运算符的实现:一.+运算符的实现class stu{private: int a; int b;public: friend stu operator+(const stu &c1, const stu &c2);//声明友元函数 stu(in原创 2017-08-23 14:23:19 · 587 阅读 · 0 评论 -
多态的原理探究和父类子类步长
一.多态是如何实现的首先用文字叙述:1.当类中声明虚函数时,编译器会在类中生成一个虚函数表2.虚函数表是一个存储类成员函数指针的数据结构3.虚函数表是由编译器自动生成与维护的4.virtual成员函数会被编译器放入虚函数表中5.当存在虚函数时,每个对象中都有一个指向虚函数的指针(C++编译器给父类对象,子类对象提前布局vptr指针),当进行test(parent *base原创 2017-09-11 23:07:57 · 373 阅读 · 0 评论 -
C++继承
一,继承相关概念二.派生类的定义代码举例如下:class Parent//基类{private: int a;public: void print() { cout << "a=" << a << endl; }protected:};class Child :public Parent//派生类,这里的public 可以也可以是private或原创 2017-09-08 13:06:46 · 604 阅读 · 0 评论 -
写时拷贝
在前面博客中已经介绍过了普通的深拷贝构造函数和普通的赋值运算符重载函数,这里就不多做介绍了。一.继普通拷贝构造函数之上的简单拷贝构造和简单赋值运算符重载函数代码如下:class String{private: char *arr;public: String(const char *p = "") { if (NULL == p) { return; }原创 2017-09-24 16:32:04 · 597 阅读 · 0 评论 -
智能指针
一.为什么会有智能指针智能指针其实是解决不经意间内存泄露的一个机制~首先看下面的代码:bool connectserver(){ cout << "链接服务" << endl; return rand() % 5 == 0;}void pushmail(){ cout << "链接成功" << endl; cout <&原创 2017-09-26 08:42:49 · 677 阅读 · 0 评论