
c++
文章平均质量分 61
sophia__yu
想要获得,便得付出。
展开
-
非类型的模板参数
对于模板参数一般会有class 或者typeneme类型,但也可以是已知类型,即非类型的模板参数,但是非类型的类模板参数不能是double/float/自定义类型#include<iostream>#include<stdlib.h>#include<string>#include<time.h>#include&原创 2018-10-14 21:18:23 · 667 阅读 · 0 评论 -
继承里既有虚继承也有虚函数继承(即既有虚基表,也有虚函数表)
菱形继承原创 2018-10-14 20:26:13 · 378 阅读 · 0 评论 -
容器适配器(栈容器适配器、队列容器适配器)
我们已有的容器(比如vector、list),这个容器支持的操作很多,比如插入,删除,迭代器访问等等。而我们希望这个容器表现出来的是栈的样子:先进后出,入栈出栈等等,此时,我们没有必要重新动手写一个新的数据结构,而是把原来的容器重新封装一下,改变它的接口,就能把它当做栈使用了。c++定义了三种容器适配器,他们让容器提供的接口变成了我们常用的数据结构:栈(先进后出),队列(先进先出),优先级队列...原创 2018-10-14 20:02:28 · 443 阅读 · 0 评论 -
顺序表模板和双向带头循环链表模板
类的类名和类型从在类内定义顺序表模板的构造函数和类内声明类外定义构造函数来区别类名和 类型:#include<iostream>#include<stdlib.h>#include<string>using namespace std;//顺序表模板//Seqlist 是类名//Seqlist<T&g原创 2018-10-14 19:51:46 · 195 阅读 · 0 评论 -
函数模板、函数模板实例化、函数模板重载
模板是泛型编程的基础。所谓泛型编程就是编写与类型无关的逻辑代码,是一种复用的方式。模板分为模板函数和模板类。如果是交换两个数据,我们会定义对应类型的函数,比如要交换int类型数据,我们会定义int类型swap函数,如果是交换double类型数据,会再定义double类型交换函数。void Swap(int& a, int &b){ int c = a; a = b; b...原创 2018-10-14 19:39:34 · 2898 阅读 · 0 评论 -
菱形继承和多态区别
对于菱形继承可参考这篇博客:原创 2018-10-05 18:47:51 · 251 阅读 · 0 评论 -
c++多态:静态多态和动态多态
多态:即多种形态。对不同对象发送同一消息,不同对象会做出不同的响应。多态分为静态多态和动态多态。1.静态多态:静态多态又称编译期多态:是指在**编译阶段就知道程序执行到这里接下来会执行哪个函数。**例如:函数重载,对象名加点操作符执行函数等都是静态多态。函数重载是函数名修饰规则从而确定执行哪个函数,而对象名加点操作符是通过this指针来确定的。2.动态多态:动态多态是利用虚函数实现运行时的...原创 2018-09-24 21:24:53 · 1181 阅读 · 0 评论 -
c++函数重载、重写、重定义区别与联系及协变
1.函数重载:在C++种,函数重载是在同一作用域,函数名相同,但是参数列表:参数个数,参数类型,返回值(可同可不同)不同。总之,只要在同一作用域,只要函数名相同,就可构成函数重载。对于函数重载可查看这篇博客:https://mp.youkuaiyun.com/postedit/805519812.重定义(隐藏)在基类和派生类中有同名成员,成员可以是变量,也可以是函数,如果是函数,不管参数或是返回值是否相...原创 2018-09-24 17:30:12 · 3154 阅读 · 0 评论 -
虚函数(重写)、多态、单继承虚表、多继承虚表
虚函数 虚函数:类的成员函数前加virtual关键字,则称这个成员函数为虚函数;虚函数重写 虚函数重写:当在子类中定义了一个与父类完全相同的虚函数时,则称子类的虚函数重写(覆盖)了父类的虚函数。多态 多态:当使用父类的引用或指针调用重写的虚函数时,当指向父类调用的是父类的虚函数,指向子类调用的是子类的虚函数。class Person{public: virtual void...原创 2018-09-24 16:28:24 · 1471 阅读 · 0 评论 -
静态成员函数、内联函数、构造函数、析构函数、operator=是否可以定义为虚函数?
1.静态成员函数:静态成员函数属于类,也属于对象,但最终属于类,在内存中只有一份,即没有this指针;而虚函数必须根据指向哪一个对象来确定调用谁的虚函数,即虚函数要在有对象的基础上才可以。所以静态成员函数不可以定义为虚函数。...原创 2018-09-21 19:29:31 · 1438 阅读 · 0 评论 -
private、public、protected变量在类外是否可以访问和内存分布有关吗
protected 、public、private成员变量,由于限定符属性不同,在类外访问权限也不同。如private成员变量继承后变为不可见,那么不同限定符定义的变量在内存中地址连续吗?如果连续,那为什么private成员变量继承后不可见呢?class A{public: A() { _a = 1; ...原创 2018-09-19 20:53:59 · 5100 阅读 · 0 评论 -
继承(不同继承方式成员的访问限定、重定义)
一:继承概念 继承是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。被继承的类称为基类、父类,新类称为派生类、子类。 定义子类时,用冒号表示父类,public、private、protected分别表示三种不同继承方式。 继承的定义: ...原创 2018-09-08 22:43:43 · 798 阅读 · 0 评论 -
string及顺序表、链表(C++)
首先,了解下string库函数: 具体参考:http://www.cplusplus.com/reference/string/string/?kw=string 1.constructor 对于7个构造函数依次如下: 2.capacity 注:size( )和length( )都是string大小,推荐使用size( ); reserve( )是直接扩容; resize...原创 2018-08-08 19:34:50 · 950 阅读 · 0 评论 -
String(深浅拷贝、字符串增删查改、写时拷贝)
浅拷贝与深拷贝 所谓浅拷贝是指将对象的每一个值拷贝给另一个对象那么就存在两个问题: 如果是动态申请的空间值拷贝后会对该空间析构两次,程序崩溃; 一个对象值的改变会用影响另一个对象。class String //管理字符串的类{public :char *c_str() { return _str; } ~String() //析构函数 ...原创 2018-06-26 23:05:28 · 1664 阅读 · 0 评论 -
C++动态内存管理
对于C的动态内存管理可以参考本篇博客: https://mp.youkuaiyun.com/postedit/79508975 new和delete 在c++中用new/delete动态管理对象;new[ ]和delete[ ] 动态管理对象数组。 注:new是申请空间,delete是释放空间 看下列例子: 注:malloc/free需要手动计算类型大小且返回值为void*,new/del...原创 2018-06-19 21:35:55 · 206 阅读 · 0 评论 -
const成员函数、内联、友元、静态成员、优化
const 成员函数 在成员函数后面加const,const修饰this指针所指向的对象,也就是保证调用这个const成员函数的对象在函数内不会被改变。#include<iostream>using namespace std;class Data //日期类 {public: Data(int year=1998, int month=1, int day原创 2018-06-14 11:55:33 · 341 阅读 · 0 评论 -
c++初始化列表
初始化列表 类的成员变量有两种初始化方式: 1.构造函数体内 赋值; 2.初始化列表—>定义阶段,因为private里是变量的声明。 初始化列表以一个冒号开始,接着一个逗号分割数据列表,每个数据成员都放在一个括号中进行初始化。#include<iostream>using namespace std;class Time//时间类{public: T...原创 2018-06-11 11:49:00 · 1249 阅读 · 2 评论 -
类和对象(日期类)(构造函数、拷贝构造、析构、赋值操作符重载、this指针)
首先,了解三种访问限定符: 1. public成员可从类外部直接访问,private/protected成员不能从类外部直接访问。 2. 每个限定符在类体中可使用多次,它的作用域是从该限定符出现开始到下一个限定符之前或类体结束前。 3. 类体中如果没有定义限定符,则默认为私有的。 4. 类的访问限定符体现了面向对象的封装性。 类实例化对象: 成员函数的声明和定义1.类内定义...原创 2018-06-08 16:54:53 · 1138 阅读 · 0 评论 -
指针 引用 const
一:引用 引用:引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名; 定义的格式为:类型& 引用变量名=已定义过的变量名 引用的特点: 1.一个变量可以有多个别名int a = 1;int& b = a;int& c = a;int& d = b;cout << &原创 2018-06-08 14:39:09 · 442 阅读 · 1 评论 -
C++初认识(namespace、cout、cin、函数重载、缺省参数)
count、cin、endl count是标准输出流对象,<<是输出操作符;cin是标准输入流对象,>>是输入操作符;endl是换行符操作符。他们都属于C++标准库,所以都在std的名字空间里。 在写C++程序时,一般会加上using namespace std,这是为什么呢? 首先原创 2018-06-02 22:08:02 · 919 阅读 · 0 评论