C++
文章平均质量分 95
详细总结C++各类知识
shanghx_123
努力成为一名优秀的程序员
展开
-
C++中使用函数地址强制调用私有成员函数
最近写c++遇到一个小问题,就是调用brpc库里面的discovey中的拉取server节点函数时,发现这个函数是私有的,直接调用肯定不行。官方给的使用方法是通过初始化channnel,之后的拉取server节点的工作都交给brpc来做。但是想拿到拉取后的节点,就不好做了。拉取函数Getservers无奈之举,想出两种方案:1.强制调用brpc里面的私有函数Getservers;2.按照...原创 2020-01-07 19:14:44 · 1620 阅读 · 0 评论 -
C++---模板分离编译问题
什么是分离编译一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。通俗的说,也就是你的程序中有多个源文件,和多个头文件,最后将多个源文件单独编译后形成一个可执行程序的过程,叫做分离编译。举个例子:a.h文件// a.h#include<iostream>using namespac...原创 2019-01-27 17:57:25 · 273 阅读 · 0 评论 -
C++---STL-模拟实现vector
STL有六大组件,如图:今天我们来模拟实现容器部分的vector,看看底层怎么做。直接看代码,细节都在代码里面。#include<iostream>#include<assert.h>#include<string>using namespace std;namespace V{ template<class T原创 2019-01-26 22:35:07 · 390 阅读 · 0 评论 -
C++设计模式---单例模式
设计模式设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。目的: 为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。分类: 主要分三个类型:创建型、结构型和行为型。具体分类:单例模式就属于创建型的设计模式。单例模式单例模式即一个类只能创建一个...原创 2019-01-24 21:33:50 · 928 阅读 · 0 评论 -
如何定义一个只能在堆/栈上生成对象的类?
C++中,建立对象可以分为两种,一种是在栈上,一种是在堆上。在栈上成为静态建立,而后者成为动态建立。静态建立一个累的对象,是由编译器自动为对象在栈空间中分配内存,然后调用该对象的构函数形成一个对象,这种方法是直接调用类的构造函函数。动态建立对象,则是通过new运算符在堆上建立对象。具体步骤是:先执行operator new()函数,在堆上先开辟一段空间;然后然后调用构造函数进行初始化。这种方法...原创 2019-01-15 22:14:13 · 1164 阅读 · 3 评论 -
智能指针
1.RAII(Resource Acquisition Is Initialization)RAII(Resource Acquisition Is Initialization)即资源分配及初始化,它源于C++,在其他语言Java,C#等中也有应用,它是在一些面向对象语言中的一种惯用法。是一种管理资源、避免泄漏的惯用法。RAII机制是通过利用对象出了作用域的自动销毁的机理,使得资源也具有了生...原创 2018-12-24 20:32:19 · 1200 阅读 · 0 评论 -
RTTI---dynamic_cast
什么是RTTI?RTTI(Run-Time Type Identification),通过运行时类型信息程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型。RTTI提供了以下两个非常有用的操作符:(1)typeid操作符,返回指针和引用所指的实际类型。(2)dynamic_cast操作符,将基类类型的指针或引用安全地转换为派生类型的指针或引用。typeid函数该函...原创 2018-09-25 22:05:09 · 1001 阅读 · 0 评论 -
C++多态调用实现原理(虚函数表详解)
1.带有虚函数的对象模型我们先看段代码:#include<iostream>using namespace std;class B1{ public: void func1() {} int _b;};class B2{ public: virtual void func()原创 2018-10-11 11:42:22 · 4587 阅读 · 2 评论 -
C++第二大特性---继承
什么是继承?继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。简单地说,继承就是对代码的复用。继承权限&访问限定符继承的方式共有public、protected、private三种方式,不同的继承方...原创 2018-09-19 18:11:15 · 1523 阅读 · 0 评论 -
C++---重载、重写(覆盖)、重定义(隐藏)
我们经常会被重载、重写、重定义经常被我搞混,今天就专门总结区别一下。1.重载重载概念:重载指的都是函数重载,函数重载就是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列 表(参数个数、类型、顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。构成重载的条件:函数名相同,参数列表必须不同(参数个数,类型,顺序),返回类型可以相同,也可以不相同。...原创 2018-10-16 23:58:33 · 870 阅读 · 0 评论 -
模拟实现string类
c++原创 2018-03-28 23:51:03 · 232 阅读 · 2 评论