C++
issac199854
种子不是一朝一夕就能发芽结出果实 而你手中的苹果耽搁了时间就不再好吃了
展开
-
引用、引用和指针的联系和区别
一、引用的概念:引用不是新定义一个变量,是给已经存在的变量取一个别名,编译器不会给引用变量开辟空间,它和被引用的实体共用同一块内存空间。二、引用格式:类型& 引用变量名 = 引用实体三、引用的几个特性:1.引用在定义是必须初始化。int a = 10;int& ra = a;2.引用前必须有实体,只能引用一个实体,但一个实体可以有多个引用。int a = 10;...原创 2018-11-16 22:40:27 · 505 阅读 · 0 评论 -
static成员
用static修饰的成员变量,称之为静态成员变量,用static修饰的成员函数,称之为静态成员函数。面试题:实现一个类,计算程序中创建了多少个类对象class Count{public: Count() { ++_count; } Count(const Count& C) { ++_count; } static int Get...原创 2019-04-20 15:14:22 · 233 阅读 · 0 评论 -
C++智能指针
首先需要了解RAII思想,什么是RAII思想,RAII是一种利用对象生命周期来控制程序资源(内存、文件句柄、网络连接、互斥量)的简单技术。通俗易懂来讲就是在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的时候释放资源。就有如下好处:不需要显式的释放资源对象所需的资源在其生命周期内始终保持有效template<class T>cla...原创 2019-03-13 00:55:38 · 186 阅读 · 0 评论 -
深拷贝与浅拷贝的理解
我们直接通过现象看问题!(下面的拷贝构造函数和赋值运算符重载是有问题的!!!)#include &amp;amp;amp;amp;amp;amp;lt;string&amp;amp;amp;amp;amp;amp;gt;class String{public: String(const char* str = &amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;quot;) { if (原创 2019-01-23 16:45:56 · 539 阅读 · 0 评论 -
C++中的STL
一、概念STL(Standard Template Library),即标准模板数据库,是一个具有高效开发强度的C++程序库,它包含了在计算机领域所常见 的基本数据结构和基本算法。STL的一个重要特点是数据结构和算法的分离。比如,STL中的sort()是通用的,既可以对数据进行排序,也可以对链表等结构进行排序。二、六大组件1.容器(Container):是一种数据结构,比如list、vec...原创 2019-01-22 20:29:09 · 278 阅读 · 0 评论 -
C++函数模板和类模板
一、函数模板1.概念实际是建立一个模型,然后根据这个模板去实例化一些对象,它的函数类型和形参类型不具体指定,用一个虚拟的类型来代表,这个通用的函数就称为函数模板,只要是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需要在模板中定义一次,在调用函数时,编译器会根据实参的类型对函数进行推演,从而实现了函数不同的功能。例如下面能实现加法功能的模板:template<class...原创 2019-01-22 17:37:27 · 350 阅读 · 0 评论 -
模拟实现vector
继之前的vector的用法总结之后,简单实现的vector。测试代码只写了一部分,再就是有个问题,在linux环境下编译nullptr会报错(未声明)?求指教using namespace std;template&lt;class T&gt;class Vector{ public: typedef decltype(nullptr) nullptr_t; typed...原创 2019-01-27 15:45:29 · 366 阅读 · 0 评论 -
C++vector基本用法总结
注意:int main(){ vector&lt;int&gt; v1; v1.push_back(1); v1.push_back(4); v1.push_back(2); cout &lt;&lt; *v1.begin() &lt;&lt; endl; cout &lt;&lt; *v1.end() &lt;&lt; en原创 2019-01-25 23:01:19 · 579 阅读 · 0 评论 -
C++多态的实现及原理
引入的相关概念:静态类型:声明变量的类型-----编译器编译期间已经确定。动态类型:实际指向空间的类型。C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时就会根据对象的实际类型来调用相应的函数,如果对象类型是派生类,就调用派生类中的函数,如果对象类型是基类,就调用基类函数。1.用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的...原创 2019-01-15 19:45:03 · 317 阅读 · 0 评论 -
string类的模拟实现
说明:有些函数返回的是String&amp;(引用),有些是String(值),这取决于返回的对象是函数的局部变量还是全局变量。String.h#include &lt;string&gt;#include &lt;iostream&gt;#include &lt;assert.h&gt;using namespace std;class String{public: Stri原创 2019-01-25 14:22:13 · 277 阅读 · 0 评论 -
继承—菱形继承及菱形虚拟继承
一、继承(一)概念:使代码复用的手段(二)继承权限:1.类中的访问权限(public、protected、private)2.继承列表中的继承权限(public、protected、private)注意:保护访问权限和私有访问权限在派生类中体现出来,即protected可以在派生类访问,在类外不能访问,private不可以在派生类中访问,更不能在类外访问(三)继承方式:1.公有的继承...原创 2019-01-15 00:07:18 · 407 阅读 · 0 评论 -
C/C++内存管理
一、C/C++内存分布说明:1.栈(堆栈):非静态局部变量/函数参数/返回值,栈是向下增长的。2.内存映射段:高效的I/O映射方式,用于装载一个共享的动态内存库,用户可以使用系统创建共享内存,做进程间通信。3.堆:用于程序运行时动态内存分配,堆是向上增长的。4.数据段:存储全局数据和静态数据。5.代码段:可执行的代码/只读常量。二、C语言动态内存管理方式(一)malloc/cal...原创 2018-12-02 20:02:59 · 208 阅读 · 0 评论 -
友元函数、友元类、内部类
一、友元函数1.概念:一个类的私有成员通常只能由类的成员函数来访问,而友元函数可以访问类的私有数据成员,也能访问保护成员。2.作用:(1)使用友元函数可以提高性能。如:用友元函数来重载操作符。(2)用友元函数可以访问两个或多个类的私有成员。但不是类的成员函数。(3)友元函数不能用const修饰。(4)友元函数可以在类定义的任何地方声明,友元函数的定义在类外部,不受类访问限定符限制。...原创 2018-11-26 23:50:05 · 467 阅读 · 0 评论 -
宏与内联函数
一、宏函数1.不带参数的宏定义:(1)格式:#define 标识符 字符串(2)其中标识符就是符号常量,也成为“宏名”。预处理(预编译)阶段也叫做宏展开,将宏名替换成字符串。#define PI 3.1415926 //把程序中出现的PI全部替换成3.14159262.带参数的宏定义(宏函数):(1)除了一般的字符串替换,还要做参数代换。(2)格式:#define 宏名(参数表)...原创 2018-11-24 23:17:27 · 318 阅读 · 0 评论 -
缺省参数与函数重载
一、缺省参数1.C语言与C++在对函数检测时的区别void Func(){}int main(){ Func(); Func(1); Func(1, 2); return 0;}对于同一段代码,在.c文件进行编译时,结果如图:在.cpp文件下编译时,结果如图:由此可知,C语言与C++对于函数参数的检测标准不同,C++对函数参数的检测更加严格。2.缺省参数的概念。...原创 2018-11-24 21:53:19 · 257 阅读 · 0 评论 -
this指针
一、this指针的引出:上一篇博客主要介绍了C++中类与对象的基本概念,类可以定义成员函数,那么我们来看看下面的代码:class Date{public: void Display() { cout << _year <<'-'<< _month <<'-'<< _day << endl; } void ...原创 2018-11-17 20:47:47 · 175 阅读 · 0 评论 -
类与对象
一、类与对象的认知1.C语言时面向过程的,更注重的是过程,分析求解问题的步骤、算法,通过函数条用逐步解决问题。C++是面向对象的,注重的是对象,将问题拆分成不同的对象,靠对象之间的交互完成。二、类的引入1.C语言中,结构体内只能定义变量,C++中既可以定义变量,也可以定义函数。三、类的定义1.类的一般定义格式如下:class className{ 访问限定符: 类成员函数 访...原创 2018-11-17 19:33:30 · 275 阅读 · 0 评论 -
类的6个默认成员函数
一、构造函数:class date{public: void display() { cout << _year <<'-'<< _month <<'-'<< _day << endl; } void setdate(int year,int month,int day) { _year = year...原创 2018-11-20 01:05:42 · 251 阅读 · 0 评论 -
模板不能分离编译及相关问题
首先我们要知道程序跑起来的过程预处理:test.c -> test.i(头文件展开、宏替换、去掉注释)编译:test.i -> test.s (语法检查、生成汇编代码)汇编:test.s -> test.o (把汇编代码转换成机器码)链接:test.o ->.exe (生成可执行程序)1 分离编译1.1理解概念:分离编译就是一个程序的由很多个源文件共同实现...原创 2019-07-23 22:04:12 · 273 阅读 · 0 评论