C++
hyb_91
这个作者很懒,什么都没留下…
展开
-
C++特化的应用——类型萃取
提出问题:如何实现一个对于拷贝内置类型和自定义类型通用的拷贝函数? 1、拷贝内置类型对于内置类型我们可以用memcpy进行拷贝,因为memcpy属于浅拷贝,内置类型不涉及资源管理的问题。2、拷贝自定义类型拷贝自定义类型时有可能会涉及到深拷贝(如string)涉及到了资源管理,就不能使用memcpy。所以给出了一种方法:赋值void Copy(T* dst, const...原创 2019-01-24 14:18:49 · 238 阅读 · 0 评论 -
菱形继承与菱形虚拟继承
菱形继承单继承:一个子类只有一个直接父类时称这个继承关系为单继承 多继承:一个子类有两个或以上直接父类时称这个继承关系为多继承菱形继承:菱形继承是多继承的一种特殊情况。 来看看下面这段菱形继承的代码有什么问题呢?#include <iostream>class A{public: int a;};class A1 : public A{...原创 2019-01-30 16:00:34 · 272 阅读 · 0 评论 -
实现一个不能被继承的类
在c++98中,我们将构造函数私有化,这个类将无法被继承 在c++11中提供了final ,final关键字修饰的类为最终类,表明该类不能被继承//C++98:将构造函数私有化,此类可不被继承class A{public: static A GetInstance() { return A(); }private: A() {}...原创 2019-01-30 13:43:16 · 201 阅读 · 0 评论 -
面向对象三大特性之一:继承(C++)
目录继承的定义基类对象和派生类对象的赋值转换继承中的作用域派生类与基类中成员的关系派生类与默认成员函数的关系继承与友元的关系继承与静态成员的关系面向对象的三大特性:封装,继承,多态。继承作为三大特性之一,是使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。继承呈现了面向对象程序设计的层次结构,继承是类设计层次的复用。继承的...原创 2019-01-29 18:51:33 · 603 阅读 · 0 评论 -
C++ 中的 IO流
目录回顾:C语言中的输入输出C++中的IO流一、流是什么?二、C语言中的IO流三、C++中的IO流四、C++中的文件流 回顾:C语言中的输入输出 理解C++中的IO流之前,先来回顾一下C语言中的输入输出。在C语言中,我们常用的输入输出函数有以下几种:scanf printf pusts gets putc getc g...原创 2019-01-26 23:02:28 · 354 阅读 · 0 评论 -
单例模式——懒汉模式(C++)
//懒汉模式//优点: 第一次使用实例对象时,创建对象//缺点: 复杂#include <iostream>#include <mutex>#include <thread>using namespace std;class Singleton{public: static Singleton* GetInstance() //获取实...原创 2018-11-13 14:01:15 · 720 阅读 · 0 评论 -
C++内存管理
目录 C/C++在内存中的分布 C++内存管理1.new/delete操作内置类型2. new和delete操作自定义类3.operator new与operator delete函数 4. new和delete的实现原理malloc/free和new/delete的区别和联系? C/C++在内存中的分布 先来看看C/C++中程序...原创 2019-01-20 12:58:24 · 121 阅读 · 0 评论 -
C++中引用的一些问题
C++中有没有引用数组这个概念? 试分析下面这段代码会不会出现错误。struct St{ int& x; int& y; int& z;};int a = 1;int main(){ int b = 2; int* pc = new int(3); St st = {a, b, *pc}...原创 2019-01-20 15:38:40 · 259 阅读 · 0 评论 -
C++ 初识模板
目录泛型编程函数模板类模板非类型模板参数 泛型编程 若我们要写一个swap交换函数,当交换的两个变量为int型,swap函数的参数类型为int;当交换的两个变量为double型,那么就要重载一个swap函数,参数变为double型。若出现新类型时,就需要增加对应的函数。这样就使得代码的可维护性变低,一出错可能所有的重载均出错。要解决上面这个问题我们就要用到一种手...原创 2019-01-21 12:05:35 · 151 阅读 · 0 评论 -
C++ 模板特化
模板的特化 在使用模板时,可以实现一些与类型无关的代码,但对于一些特殊类型的可能会得到一些错误的结果。这时就一些需要特殊处理(对模板进行特化)。在原模板类的基础上,针对特殊类型所进行特殊化的实现方式。模板特化又分为:函数模板特化、类模板特化。 函数模板特化 template<class T> bool IsEqual(T& left, T&am...原创 2019-01-21 14:33:30 · 204 阅读 · 0 评论 -
面向对象三大特性之一:多态(C++)
目录多态的定义及实现抽象类多态的原理单继承和多继承关系的虚函数表多态的定义及实现1、什么是多态?当不同的对象去完成某个行为时,会产生出不同的结果。多态是:不同继承关系的类对象去调用同一函数时,产生了不同的行为。例如:Student类继承了Person类。 Person对象买票全价,Student对象买票半价。这就是多态行为。2、构成多态的两个必要条件调用函数...原创 2019-02-12 19:58:19 · 582 阅读 · 0 评论