
C++基础
文章平均质量分 86
Qregi
刚入行的初级程序员
展开
-
【C++基础】C++函数重载,缺省参数,命名空间问题
前几天开始学习C++语言,看到了函数重载的问题,就总结一下什么是函数重载呢?函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。注意,在C语言中,函数名是不允许相同的,如果函数名相同就会出现函数重载问题例如:int func(int a, int b);int func(int a, char c);int func(char a, char b);原创 2018-03-12 17:15:07 · 422 阅读 · 0 评论 -
C++多态的纯文字介绍
多态通俗理解就是多种形态, 它是一种接口重用, 可以理解为同一个接口, 实现不同的方法C++中, 多态分为静态多态和动态多态静态多态的实现就是函数重载动态多态的实现是, 父类的指针或引用, 调用父类或子类的同一个接口, 即同名虚函数, 如果子类实现了虚函数重写, 就可以实现多态, 实质上就是调用子类或父类的同一个接口, 实现不同的方法, 指向谁调谁具体的实现是通过虚函数来实现的, ...原创 2018-10-07 23:38:30 · 266 阅读 · 0 评论 -
【C++基础】C++模板总结
一、模板模板是泛型编程的基础,分为模板函数和模板类泛型编程就是与类型无关的逻辑代码,是一种复用的方式。那么为什么要有泛型编程呢?C++是一门强类型的语言,无法像动态语言那样,可以写一段逻辑代码,把任意类型传进去。为了解决这个问题所以有了泛型编程,通过把通用的逻辑设计为模板,可以摆脱类型的限制,提供了继承机制以外的又一种抽象机制,提升了代码的复用性注意:模板不参与编译,是编译器根...原创 2018-06-21 17:54:09 · 946 阅读 · 0 评论 -
【C++基础】C++多态相关概念
C++多态总结多态是面向对象编程领域的核心概念之一,那么什么是多态呢?多态一词最初来源于希腊语,意思是具有多种形式和多种形态的情形,在C++中是指同样的消息被不同的对象接受时导致不同的行为,这里的消息就是指对象的成员函数的调用,不同的行为指的是不同的实现。多态性可以简单的概括为“一个接口,多个方法”,程序在运行时才决定调用哪个函数。C++的多态是用虚函数来实现的,下面介绍一下虚函数:虚函数类的成员...原创 2018-05-16 16:54:55 · 1745 阅读 · 0 评论 -
【C++基础】C++多态原理和多态的对象模型
多态原理关于多态的相关概念我已经在上一篇博客中总结了,这里主要是更深入的去探索多态,上一篇的博客链接如下:多态相关概念我们已经知道多态是什么了,那么多态是如何实现的?我们写一段代码:class Base{public: Base() :a(1) {} virtual void func1() {} virtual void func2() {}private: int a;};...原创 2018-05-17 23:35:01 · 401 阅读 · 0 评论 -
【C++基础】模拟实现String类的写时拷贝
在模拟String类时,我们既有深拷贝的方法,又有写时拷贝的方法,这篇博客就是好好总结一下写时拷贝技术什么是写时拷贝呢?写时拷贝技术(Copy On Write)是一个被使用在程序设计领域的最佳化策略,其基础的观念是,如果有多个呼叫者(callers)同时要求相同资源,他们会共同取得相同的指标指向相同的资源,直到某个呼叫者(caller)尝试修改资源时,系统才会真正复制一个副本(private c...原创 2018-04-26 11:56:08 · 598 阅读 · 0 评论 -
【C++基础】模拟实现string类
C++中string类是个管理字符串的类,而在面试中,如何模拟实现string类也是一个考点,我在这里简单的实现一下如何模拟实现一个string类模拟实现string类class String{public: //成员函数private: //成员变量 char* _str; size_t _size; size_t _capacity;};模拟实现string...原创 2018-04-24 23:43:19 · 1969 阅读 · 1 评论 -
【C++基础】深浅拷贝解析
在C++中,在用一个对象初始化另一个对象时,只复制了成员,并没有复制资源,使两个对象同时指向了同一资源的复制方式称为浅复制,也就是我们说的浅拷贝。浅拷贝通俗的理解,浅拷贝,只是对指针的拷贝,拷贝后两个指针指向同一个内存空间,深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针是指向两个不同地址的指针。请看下面的代码://浅拷贝class String{public: St...原创 2018-04-24 20:33:38 · 349 阅读 · 0 评论 -
【C++基础】C++继承总结
C++继承总结继承是什么?继承是面向对象复用的重要手段,通过继承定义一个类,继承是类型之间的关系建模,共享公有的东西。通过继承联系在一起的类构成一种层次关系,通常在层次关系的根部有一个基类,其他类则直接或间接的从基类继承而来,这些继承得到的类称为派生类。基类负责定义在层次关系中所有类共同拥有的成员,而每个派生类定义各自特有的成员。继承的时候,派生类通过使用派生类列表明确指出它是从哪个基类继承而来。...原创 2018-05-08 23:53:44 · 514 阅读 · 0 评论 -
【C++基础】浅谈内联、静态成员和友元
内联函数什么是内联函数呢?以inline修饰的函数叫做内联函数,例:inline int MAX(int a, int b) { return a > b ? a : b;}MAX函数是比较两个整型变量a和b的大小的函数,被inline修饰后,就称为了内联函数那么,内联函数有什么作用呢?C++编译器在对代码进行编译的时候,在遇到内联函数的时候,就会把代码展开,没有函数压栈的开...原创 2018-03-28 19:56:57 · 398 阅读 · 0 评论 -
【C++基础】C/C++动态内存管理
C/C++中,有时候不能确定数组该定义为多大,这时候程序需要从系统中动态的获得内存空间,所谓动态内存分配,是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法,由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小与之相反的是静态内存分配,例如数组,在编译期间就已经分配好内存了C语言动态内存分配我已经总结过了,博客链接如下:C语言动态内存分配总结在这里主要总结C++新加入的动态内...原创 2018-04-03 15:40:56 · 270 阅读 · 0 评论 -
【C++基础】实现一个日期类
又是一个昏昏欲睡的下午~好了不多说,开始总结自己写的代码吧我写这个日期类,一个是判断输入的时期是否合法,也就是在构造函数那块,还有一个是运算符重载的时候先讲一下如何判断日期是否合法,写一个函数返回当前月的天数,代码如下://判断闰年bool Date::isleap(int year) { if ((_year % 4 == 0 && _year % 100 != 0) || ...原创 2018-03-21 17:09:19 · 749 阅读 · 0 评论 -
【C++基础】C++类的六个默认成员函数
C++中,类有六个默认的成员函数,如图:接下来就分别介绍一下这六个成员函数1.构造函数在C++中,许多类的成员变量都是私有的,在类外部想要对变量初始化是办不到的,所有以必须有一个公有的函数进行初始化,而这个函数当且仅当在定义对象的时候自动执行一次,这时调用的函数叫做构造函数构造函数是个比较特殊的成员函数,有以下几种特点:1.函数名与类名相同 2.没有返回值 3.对象构造时系统自动调用对应的构造函原创 2018-03-18 18:32:09 · 498 阅读 · 0 评论 -
【C++基础】类的默认成员函数的几种调用方式
先写一个日期类,把构造函数,拷贝构造函数,析构函数,赋值运算符的重载都写上,代码如下:class Date{public: //构造函数 Date() { cout << "Date()" << endl; } //拷贝构造函数 Date (const Date & d) { cout << "Date(cont Date& ...原创 2018-03-30 18:57:39 · 3438 阅读 · 0 评论 -
【C++基础】关键字const的总结
const是C语言中的一个关键字,因为C++是C的超集,所以C++中也有const关键字所以今天就总结一下const关键字const的作用是什么const的作用是限定一个变量不被改变,例如: int i = 10; const int j = 10;上面定义了两个变量i和j,j是有const修饰的,所以j是不可改变的所以,const的作用可以理解为就是修改权限,本来可以读可以写,被const修饰...原创 2018-03-24 19:50:06 · 257 阅读 · 0 评论 -
【C++基础】浅谈C++中引用和指针的区别
引用是什么呢?引用(reference)是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。引用其实是给已经定义的变量起一个别名定义的格式为: 类型 & 引用的变量名 = 已经定义的变量引用这样几个特点:1.一个变量可以起多个别名,也就是说可以进行多次引用2.引用必须初始化3.引用 只能在引用的时候初始化一次,不能改变引用,就是不能再去引用别的变量例原创 2018-03-14 15:02:42 · 335 阅读 · 0 评论 -
关于迭代器一些题
string::iterator p; // 一个正常的迭代器, 可++, 可解引用string::const_iterator cp; // 可++, 不可解引用const string s("abcde"); // s对象为一个const对象, 不可修改 1. p = s.begin();错误, s对象是一个const修饰的string类对象, 所以s.be...原创 2018-10-10 20:54:06 · 396 阅读 · 0 评论