![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
Wan_shibugong
这个作者很懒,什么都没留下…
展开
-
【C++笔记】引用
一、C语言传值的方法C语言中,函数传参有两种方式 1、传值void Swap(int left,int right){ int temp = left; left = right; right = temp;}传值:在函数调用过程中会产生一份临时变量,最终把实参的值传递给新分配的临时变量即形参 优点:避免了函数调用的副作用 缺点:无法改变实参的值如...原创 2018-06-20 19:07:10 · 481 阅读 · 0 评论 -
【STL】【容器】string
string是一个标准模板类一、string的初始化首先,为了在程序中使用string类型,必须包含头文件< string>。如下: #include <string>注意这里不是string.h,string.h是C字符串头文件。 string类是一个模板类,位于名字空间std中,通常为方便使用还需要增加: using names...原创 2018-09-03 13:33:24 · 169 阅读 · 0 评论 -
STL概念
一、STL1、概念STL是C++标准库的最重要的组成部分,STL(标准模板库)不仅是一个可复用的组件库,而且是一个包罗算法和数据结构的软件框架。2、STL版本原版本-Alexander Stepanov、Meng Lee在惠普实验室完成原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源声...原创 2018-09-03 21:40:52 · 370 阅读 · 0 评论 -
【STL】【容器】vector
一、vector的概念vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库负责管理存储元素的相关内存。我们把vector称为容器,是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。使用vector之前,必须包含相应的头文件。#include&amp;lt;vector&amp;gt;usingstd::vector;vect...转载 2018-09-03 22:51:51 · 259 阅读 · 0 评论 -
【C++】C++中的.和::和:和->的区别
在学习C++的过程中我们经常会用到.和::和:和->,在此整理一下这些常用符号的区别。 1、A.B则A为对象或者结构体;2、A->B则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针;3、::是作用域运算符,A::B表示作用域A中的名称B,A可以是名字空间、类、结构;4、:一般用来表示继承;...转载 2018-09-03 22:53:15 · 10410 阅读 · 0 评论 -
【C++】struct 与 class的区别(在标准C++中)
在C++中struct 与 class 区别struct中的成员默认是public。class中默认的是private如果没有多态和虚拟继承,在C++中,struct和class的存取效率完全相同。在用模板的时候只能写 template <class Type>或template<typemname Type> 不能写template<stru...转载 2018-09-13 00:27:41 · 438 阅读 · 0 评论 -
【C++】struct结构在C和C++中的区别
struct结构在C和C++中的区别C语言中:struct是用户自定义数据类型(UDT);C++中struct是抽象数据类型(ADT),支持成员函数的定义,(C++中的struct能继承,能实现多态)。C中struct是没有权限的设置的,且struct中只能是一些变量的集合体,可以封装数据却不可以隐藏数据,而且成员不可以是函数。C++中,struct的成员默认访问说明符为public(为...转载 2018-09-13 00:30:02 · 667 阅读 · 0 评论 -
【C++】struct 与 union 在C与C++中的区别
点击查看转载 2018-09-13 00:32:39 · 300 阅读 · 0 评论 -
编译器什么情况下,合成构造函数?
问题:C++面向对象编程时,如果我们没有声明任何构造函数constructor,按照以前最初学习,说编译器会自动合成一个默认的无参构造函数default constructor,但是事实确实是这样吗,存不存在例外呢,即使有合成构造函数,那么它又将对类数据进行怎样的初始化呢?1、回答第一个问题:存在例外!!!(下文讨论的前提是:我们没有声明任何构造函数)如果我们没有声明任何构造函数,编译器不会...原创 2018-09-18 00:54:18 · 372 阅读 · 0 评论 -
c++返回类型协变
在C++中,只要原来的返回类型是指向基类的指针或引用,新的返回类型是指向派生类的指针或引用,覆盖的方法就可以改变返回类型。这样的类型称为协变返回类型(Covariant returns type).返回类型协变覆盖要求函数具有完全相同的入参。一般覆盖具有相同的返回值,否则会提示错误virtual double area ()const = 0;virtual float area ()c...转载 2018-09-18 01:40:20 · 2505 阅读 · 0 评论 -
【C++】 设计一个不能被继承的类
吃饭时与“大姐”讨论问题,他问道“C++如何设计一个不能被继承的类”?不能被继承,那把构造函数和析构函数设计成私有的不就行了,这样一来子类不能访问父类的构造函数和析构函数,也就无法继承了。然而这样一来,这个类在其他地方也就不能实例化了,没有存在的意义了。这时候你是不是想到了静态方法,是啊,我们可以通过静态方法来返回类的实例,然后通过另一个静态方法来释放该类对象。代码如下://stati...转载 2018-09-13 11:01:03 · 314 阅读 · 0 评论 -
【C++】设计一个类,该类不能被继承(自己笔记)
一、不能被继承的要求构造函数设置为私有 因为创建子类时需要访问父类的构造函数析构函数设置为私有 因为销毁子类时需要访问父类的析构函数所以一个类不能被继承需要将析构函数和构造函数设置为私有的。但是两个函数被设置为私有后,这样一来这个类在其他地方不能实例化,没有存在的意义。二、解决不能继承的类不能实例化的问题1、通过静态方法来解决这时候你是不是想到了静态方法,...原创 2018-09-13 12:52:44 · 919 阅读 · 0 评论 -
多态调用的原理
问题:为什么派生类对基类的虚函数重写,通过基类对象的指针或引用>调用该虚函数,就可以实现多态因为有序函数的类的对象模型的前四个字节存储的是一个地址,这个地址指向的是一个虚拟函数表,表中的内容是虚拟函数的地址。#include <iostream>#include <string>using namespace std;typedef void(*PVF...原创 2018-09-18 20:44:14 · 1505 阅读 · 0 评论 -
【C++】【模板】类模板和模板类
点击查看来源一、类模板——模板类(class template——template class)类模板的重点是模板。表示的是一个模板,专门用于产生类的模子。例子:template &lt;typename T&gt;class Vector{ ...};使用这个Vector模板就可以产生很多的class(类),Vector ...原创 2018-09-03 11:02:32 · 1179 阅读 · 0 评论 -
【C++笔记】析构函数最好声明为虚函数
为什么析构函数最好被声明为虚函数:因为析构函数声明为虚函数,将使所有派生类的析构函数自动成为虚函数,如果程序中显示的用了delete运算符删除一个对象,而delete运算符操作对象指向派生类对象的基类的指针,则系统会调用相应类的析构函数。析构函数没有声明为虚函数#include &lt;iostream&gt;using namespace std;class Base{...原创 2018-08-05 17:31:48 · 502 阅读 · 0 评论 -
堆和栈的理解
一、概念1、C/C++编译的程序占用的内存分为以下几个部分(1) 栈区(stack)———由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。(2) 堆区(heap)——— 是自由存储区,存放动态数据,像new,malloc()申请的空间就是堆区的,一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配...转载 2018-07-04 21:44:10 · 703 阅读 · 0 评论 -
this指针
一、概念1、什么是this指针?(1)、要了解this指针,首先要知道什么是类? 类是用户自己指定的类型,如果程序中要用到类类型,必须自己根据需要进行声明,或者使用别人已设计好的类。(2)用类创建一个对象,这个对象就是类的实例,对于一个类的实例来说,可以看到它的成员函数,成员变量,但是它的本身呢?this是一个指针,他时时刻2、代码来进一步来了解this指针问题:实...原创 2018-06-16 03:15:33 · 428 阅读 · 0 评论 -
【C++】输入与输出
一、基础概念转载别人的解释 1、在C++程序中方便的使用cout和cin进行输出和输入,应该说明:输出和 输入并不是C++语言的正式成分,C和C++本身没有为输出输入提供的专门 的语句结构,C语言中,输入和输出的功能是通过调用scanf函数和printf函数来实现的,在C++中是通过调用输入输出流库中的流对象cin和cout实现的,也就是说输入输出不是由C++本身定义的,而是在编译系统提...原创 2018-06-19 21:02:01 · 607 阅读 · 0 评论 -
【C++笔记】缺省参数
一、缺省参数1、补充知识:在c语言中,函数没有指定参数列表时,默认可以接受任意多个参数。但在c++中,因为严格的参数类型检测,没有参数列表的函数,默认为void 不接受任何参数 2、代码示例//c语言void Test(){}int main(){ Test(10); Test(10,&quot;hello,wsbg!&quot;); return 0}//全...原创 2018-06-19 22:32:26 · 804 阅读 · 0 评论 -
【C++笔记】C语言为什么不能函数重载
一、1、原因:C语言不能函数重载与函数编译后函数名有关。 2、C原因编译后的代码名称为”_函数名”//C语言int Add(int a,int b); //这里是有意只给声明不给定义,int Add(int a,char b); //出错后会在显示框显示编译后的函数名int Add(char a,int b);int main(){ Add(1,2); A...原创 2018-06-20 02:30:35 · 4645 阅读 · 2 评论 -
【C++笔记】C++中能否将一个函数按照C的风格来编译
1、如果要将C++的一个函数按照C语言的风格来编译,在函数声明前面加上extern “C”2、要将多个函数按照C语音方式来编译,则可以使用#ifdef __cplusplus //这里是两个下滑线extern &amp;amp;quot;c&amp;amp;quot;{#endifn个函数描述#ifdef __cplusplus}#endif...原创 2018-06-20 10:24:06 · 1125 阅读 · 0 评论 -
函数重载
一、函数1、前言:在编程时,一般是一个函数对应一种功能。但有时我们要实现的是同一类的功能,只是有些细节不同。例如希望从3个数中找出其中的最大值,而每次求最大数时数据的类型不同,可能是3个整数、3个双精度数或3个长整型数。程序设计者往往会分别设计出3个不同名的函数,其原型为:int max1(int a,int b,int c);double max2(double a,double ...原创 2018-06-20 01:34:33 · 496 阅读 · 0 评论 -
【C++笔记】C/C++函数调用约定
函数的调用约定常见的函数调用约定[5]:cdeclstacallfastcallthiscallnaked call1、__cdecl(C语言调用约定. The C default calling convention)C/C++缺省调用方式1)、压栈顺序:函数参数从右向左 2)、参数栈维护:由调用函数把参数弹出栈,传送参数的内存栈由调用函数来维护(正因为如此,实...转载 2018-06-20 11:45:42 · 619 阅读 · 0 评论 -
C/C++常用头文件及函数汇总
C 头文件 说明 stdio.h 定义输入/输出函数,如printf,scanf,getchar等 stdlib.h 定义杂项函数及内存分配函数,如malloc等 stddef.h 常用常量,如NULL,size_t等 stdint.h 定义了各种整型的别称,如uint8_t等 string.h 字符串处理(包含了std...转载 2018-07-03 17:11:20 · 578 阅读 · 0 评论 -
【C++笔记】继承
一、继承概念1、在C++中,所谓的“继承”就是在一个已存在的类的基础上建立一个新的类。已经存在的类称为”基类(base class)”或”父类(father class)”。新建的类称为”派生类(derived class)”或”子类(son class)”。 2、继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,...原创 2018-07-10 14:19:46 · 459 阅读 · 0 评论 -
【C++笔记】继承体系下派生类的对象模型
1、单继承#include &amp;amp;amp;lt;iostream&amp;amp;amp;gt;using namespace std;class Base{public: Base() {} int _b;};class Derived : public Base{public: Derived() {} int _d;};int main(){...原创 2018-07-10 23:36:45 · 470 阅读 · 0 评论 -
设计模式之单例模式
一、单例模式概念1、单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例二、单例模式的组成1、定义一个静态的Getlnance方法,返回该类的唯一实例。2、类定义一个自身的静态成员变量,只有当该类未实例化的时候创建该类的实例。3、将类的构造函数定义成私有的,不允许外界访问构...原创 2018-10-05 19:36:31 · 155 阅读 · 0 评论