标签: C++

14 篇文章

GetMessage()与PeekMessage()的区别(Win32)
前言 众所周知 Windows的所有程序都是由消息驱动的,每个程序都有自己的消息队列,通过处理各种各样的消息来完成一系列操作,从消息队列中抓取消息的常用函数有两个,分别是GetMessage()与PeekMessage(),单从字面意思其实并不容易看出这两个函数的区别,今天刚好有空就来记录一下。 函数原型 GetMessage() BOOL Get…
利用swap()收缩内存空间(C++)
万恶之源-vector 众所周知,vector会根据输入数据自动分配内部空间,无需人为指定大小,这当然方便我们日常使用,但自动分配也就意味着一定程度上的不可控,在某些情况下极易造成内存空间的浪费,比如下面这段代码: vector<int>v; for (int i = 0; i < 1000000; i++) { v.push_b…
记录一次不太寻常的“面经”
前言 提前声明,此次面经过于离谱,可能不具备参考性 本人就读于某辣鸡双非,应聘时大三在校,小菜鸡一个 期末考完后就时不时逛一下Boss直聘,看看有没有合适的实习岗位,本来提前看好了维塔士的C++客户端开发实习,奈何已经停止招聘了,只能继续寻找其他中小厂的实习。 投了几个手游和端游小厂(我这水平大厂门都没有),有些压根不回,有些要了简历就没有下文了,…
动态多态原理浅析(C++)
前言 多态主要分为两类: 静态多态:地址早绑定,即编译阶段确定函数地址,例如函数重载、运算符重载 动态多态:地址晚绑定,即运行阶段确定函数地址 动态多态 使用条件 父类指针或引用指向子类对象 基础语法 引入一段代码示例: #include<iostream> using namespace std; class Animal { pub…
虚析构与纯虚析构(C++)
纯虚函数和抽象类 概念 首先引入“纯虚函数”和“抽象类”的概念,示例代码如下 #include<iostream> using namespace std; class Base //抽象类 { public: virtual void func() = 0; //纯虚函数 }; class Son1:public Base { pub…
菱形继承问题及解决方法—虚继承与虚基类(C++)
菱形继承 菱形继承的概念 两个派生类继承同一个基类,又有某个类同时继承着这两个派生类 菱形继承典型案例 这种继承带来的问题主要有两方面: 羊和驼都继承了动物的类成员,当羊驼想要使用时,会产生二义性 羊驼实际继承了两份来自动物的数据,但实际只需要一份 想要解决有两个思路,一是给羊驼的每一份数据加上作用域,但本质上羊驼还是继承了两份数据。二是通过虚继承…
字符串分割—istringstream(C++)
前言 算法上机课布置了这么个题 输入一段英文句子,要求提取其中所有单词,提取后的单词不能有空格和标点符号 思路 首先想到直接遍历整个字符串,遇到空格和标点就把单词输出,但是写起来比较麻烦,而且不能实现单词的存储(虽然题目没有要求存储)。 在网上搜索其他大佬的代码时发现了istringstream这个东西,这是C++的一个输入输出控制类,作用是将字符…
类外实现成员函数的好处(C++)
报错代码 事情是这样的,在学友元时,自己跟着教程的思路写了一段代码 #include<iostream> #include<string> using namespace std; class JieGay; class MyHouse { //成员函数做友元 friend void JieGay::visit(); pub…
内存对齐(C++)
内存对齐的概念 引入代码 众所周知,C++的空类占用1个字节的内存空间,非空类占用的空间与类内的成员有关。 但类中成员所占内存并不是连续的,拿以下代码举例: #include<iostream> using namespace std; class test1 { char c1; int a; char c2; }t1; class …