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 · 42 阅读 · 0 评论 -
C++智能指针采用辅助类的实现方式
智能指针:实际指行为类似于指针的类对象 ,它的一种通用实现方法是采用引用计数的方法。1.智能指针将一个计数器与类指向的对象相关联,引用计数跟踪共有多少个类对象共享同一指针。2.每次创建类的新对象时,初始化指针并将引用计数置为1;3.当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;4.对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用计数(如果引用计数为减至0,则删除对象),并增加右操作数所指对象的引用计数;这是因为左侧的指针指向了右侧指针所指向的对象,因此右指原创 2021-09-05 12:23:37 · 156 阅读 · 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 · 37 阅读 · 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 · 46 阅读 · 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 · 45 阅读 · 0 评论 -
设计模式-单例模式
//单例模式:存在一种特殊的类,保证在系统中只存在一个实例,以此确保程序的逻辑正确性、良好的效率。#include <iostream>using namespace std;class Singleton{private: Singleton(){}//定义构造函数在private中,防止生成合成的默认构造函数 Singleton(const Singleton&);//定义拷贝构造函数在private中,目的与上述一致,防止类外使用合成的拷贝函数使实例化public:原创 2021-09-01 11:17:32 · 60 阅读 · 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 · 128 阅读 · 0 评论 -
2021-08-13
C++primer第五版第14章笔记重载运算与类型转换当运算符作用于类类型时,可以重载相关运算符使程序更易理解、修改。14.1基本概念和普通函数一样,重载运算符也包含返回类型、参数列表、函数体,函数名为operator加上需要重载的符号,重载运算符的参数数量与需要运算的对象一样多,如果为成员函数,this指针则隐式的绑定到左侧运算对象,所以会少一个参数。我们不能重定义内置类型的运算符,我们只能重载已有的运算符,我们将运算符作用于正确的运算类型隐式的使用,或者通过像普通函数一样显示调用:data1原创 2021-08-20 21:57:27 · 63 阅读 · 0 评论 -
2021-08-05
C++primer第五版第13章笔记拷贝控制我们可以显示的写出一些函数,如:拷贝构造函数、移动构造函数:同类型另一个对象初始化本对象;拷贝和移动运算符:将一个对象赋予同类型的另一个对象;析构函数:对象销毁;这些统称为拷贝控制操作。13.1拷贝、赋值与销毁13.1.1拷贝构造函数...原创 2021-08-13 21:23:15 · 55 阅读 · 0 评论