随笔分类 - C++ primer
摘要:1.虚函数 1.1不含有任何数据成员或者虚函数的class或者struct大小为1,含有虚函数的对象在基地址部分有一个vptr,指向虚函数表,因此大小为4个字节。 1.2动态绑定的原理:假设派生类和基类存在覆盖的关系(基类中定义了虚函数),那么派生类在虚函数表中,会覆盖掉基类相应的虚函数。当程序...
阅读全文
摘要:1.function 和 函数指针 1.1 function有函数指针的功能,但是使用起来明显比函数指针更加灵活和方便。 1.2 函数指针和function的用法实例。 1.2.1 函数指针首先要清楚函数指针的类型,如void (*)(int, char)等,然后声明一函数指针变量直接调用...
阅读全文
摘要:1.exception.h#ifndef __EXCEPTION_H__#define __EXCEPTION_H__#include #include class Exception : public std::exception{ public: Exception(cons...
阅读全文
摘要:1.再说智能指针 1.1 为什么要用智能指针?对于一个指针,它指向一个动态分配内存的对象,若同时有多个指针指向该对象,那么当我们delete的时候,就会出现delete 一个无效内存的错误,因为该对象已经被delete过了,所以这就造成了错误。针对这一情况,我们想到,new 和 delete 必须...
阅读全文
摘要:1. 通过子类对象来调用函数: a)从父类继承而来的函数,可以正常使用; b)子类自行添加的函数,可以正常使用; c)子类编写和父类重名的函数,不管是否改变了参数,调用的都是子类的版本,如果需要调用父类的版本,需要显示指定父类名。 例1:#include #include using nam...
阅读全文
摘要:0.两个要点a) 一个空类,编译器自动合成默认无参构造函数、析构函数、拷贝构造函数、赋值运算符。b) 在编写类的时候,必须严格区分对象是否可复制。1.运算符重载之 string类1.1 运算符重载的几个要点:a) 运算符重载可以有成员函数和友元函数的形式,后者比前者多一个参数。b) =和+=必须重载...
阅读全文
摘要:1.Map1.1 map是一种pair的容器,pair的种类是pair。map采用下标访问一个已存在的key, 会更新value,访问map中不存在的元素时,会增加一个新的键值对。map中的元素按照key进行从小到大排列。map的底层实现是采用二叉树,一般是使用红黑树。#include #inclu...
阅读全文
摘要:1.默认拷贝构造函数1.1 编译器自动为我们合成一个拷贝构造函数。A(const A &).1.2 对象复制的时机:a) 显式复制。b) 使用对象做形参c) 使用对象做返回值d) 往容器中放入对象#include #include #include using namespace std;/* *用...
阅读全文
摘要:1.函数指针1.1 普通成员函数指针包含类名信息以及const属性,指向具体函数是必须加上&符号。#include using namespace std;class Test{ public: void setValue(const string &s, int a){ ...
阅读全文
摘要:1.程序框架分析:a)首先将mutex, condition, queue 封装成各自的类,方便对外提供接口函数,这里要注意 condition的封装,一个条件变量和一把锁是一起用的,因此在初始化 condition 对象的时候要用一个 mutex 对象去初始化,在pthread_cond_wait...
阅读全文
摘要:1.封装Mutex 1.1 封装前先总结一下常用的mutex操作有: pthread_mutex_init(&mutex, NULL ); //初始化一个互斥锁 pthread_mutex_destroy(&mutex); //销毁一个互斥锁 pthread_mutex_lock(&mutex); //上锁 pthread_mutex_unlock(&mutex);// 解锁 1.2 ...
阅读全文
摘要:1. 程序一,错误之处,当一个消费者在等待,此时一个生产者生产一个产品后把该消费者的等待线程激活,但是此时她还没有抢到锁,这个时候又来了一个消费者,并且互斥锁正好被它抢走,那么经过if判断此时队列不空,新来的消费者消费完释放锁离开,这时前面的被激活的那个消费者抢到了锁,当它在进行消费的时候就发生了错...
阅读全文
摘要:1.要求:将一篇文章录入,然后实现查询:a)查询可以输入字符或者字符串b)将包含它们的单词输出c)允许重复d)如果输入查询有空格,当多个处理Ex: 输入ro,应该打印出“microsift”输入”he wr”,则查询两次1.1 不用类实现#include #include #include #inc...
阅读全文
摘要:0.不要试着从C++编译器的角度理解问题,而是从程序的语义着手。1.控制台标准输入输出流的使用1.1IO对象不可复制或者赋值。因此使用IO对象做参数必须使用非const 引用参数(非const因为对IO对象的读写会改变其状态)。1.2当cin输入非法数据时,fail置为1,当cin遇到文件结尾(ct...
阅读全文

浙公网安备 33010602011771号