
primer
m0_60249132
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++string简单实现
class String{ public: String(const char *str=nullptr);//接收一个c字符串类型 String(const String &str);//拷贝构造函数,接收一个String对象 String& operator=(const String &str);//赋值运算符 char operator[](int size);//支持下标[]访问元素 size_t size()const;//返回元素个数 ~Str原创 2021-09-05 15:24:00 · 77 阅读 · 0 评论 -
C++智能指针采用辅助类的实现方式
智能指针:实际指行为类似于指针的类对象 ,它的一种通用实现方法是采用引用计数的方法。 1.智能指针将一个计数器与类指向的对象相关联,引用计数跟踪共有多少个类对象共享同一指针。 2.每次创建类的新对象时,初始化指针并将引用计数置为1; 3.当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数; 4.对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用计数(如果引用计数为减至0,则删除对象),并增加右操作数所指对象的引用计数;这是因为左侧的指针指向了右侧指针所指向的对象,因此右指原创 2021-09-05 12:23:37 · 210 阅读 · 0 评论 -
设计模式-适配器模式
老接口 class IAdaptee{ public: virtual void foo(int data)=0; virtual int bar()=0; }; class oldclass:public IAdaptee{ public: virtual void foo(int data){ } virtual int bar(){ } }; 新接口 class ITarget{ public: virtual void process()=0;原创 2021-09-04 22:01:45 · 74 阅读 · 0 评论 -
设计模式-代理模式
在某些面向对象系统中,有些对象由于对象创建开销很大、某些操作需要安全控制或需要进程外的访问,直接访问会给系统带来麻烦。 class ISubject{ public: virtual void process(); }; class RealSubject:public ISubject{ public: virtual void process(){ //...... } }; class ClientApp{ ISubject* subject; public: Clien原创 2021-09-04 21:10:22 · 80 阅读 · 0 评论 -
设计模式-策略模式
//此模式实现计算各个国家的税 //定义一个基类,并将方法定义成虚函数,如果需要添加其他国家税收,只需要让工厂模式支持可分配指针,添加一个子类即可,提高了复用性 class TaxStrategy{ public: virtual double Calculate(const string &text)=0; virtual ~TaxStrategy(); }; class CNtax:public TaxStrategy{ public: virtual double Calculate(c原创 2021-09-01 16:55:56 · 81 阅读 · 0 评论 -
设计模式-单例模式
//单例模式:存在一种特殊的类,保证在系统中只存在一个实例,以此确保程序的逻辑正确性、良好的效率。 #include <iostream> using namespace std; class Singleton{ private: Singleton(){}//定义构造函数在private中,防止生成合成的默认构造函数 Singleton(const Singleton&);//定义拷贝构造函数在private中,目的与上述一致,防止类外使用合成的拷贝函数使实例化 public:原创 2021-09-01 11:17:32 · 94 阅读 · 0 评论 -
2021-08-20
C++primer第五版第15章笔记 面向对象程序设计 面向对象程序设计主要基于三个方面:数据抽象、继承和动态绑定。本章介绍继承和动态绑定。 15.1oop:概述 使用数据抽象我们可以将接口与实现分离;使用继承,可以定义其相似类型并对相似类型建模;使用动态绑定,可以在一定程度上忽略相似类型区别,使用统一方式使用它们的对象。 15.2定义基类和派生类 首先定义基类 #include <iostream> #include<string> using namespace std; cla原创 2021-08-27 06:11:46 · 178 阅读 · 0 评论 -
2021-08-13
C++primer第五版第14章笔记 重载运算与类型转换 当运算符作用于类类型时,可以重载相关运算符使程序更易理解、修改。 14.1基本概念 和普通函数一样,重载运算符也包含返回类型、参数列表、函数体,函数名为operator加上需要重载的符号,重载运算符的参数数量与需要运算的对象一样多,如果为成员函数,this指针则隐式的绑定到左侧运算对象,所以会少一个参数。 我们不能重定义内置类型的运算符,我们只能重载已有的运算符,我们将运算符作用于正确的运算类型隐式的使用,或者通过像普通函数一样显示调用: data1原创 2021-08-20 21:57:27 · 114 阅读 · 0 评论 -
2021-08-05
C++primer第五版第13章笔记 拷贝控制 我们可以显示的写出一些函数,如:拷贝构造函数、移动构造函数:同类型另一个对象初始化本对象;拷贝和移动运算符:将一个对象赋予同类型的另一个对象;析构函数:对象销毁;这些统称为拷贝控制操作。 13.1拷贝、赋值与销毁 13.1.1拷贝构造函数 ...原创 2021-08-13 21:23:15 · 97 阅读 · 0 评论