C++
RGBMarco
时间能证明一切,如果不能帮助到别人,那就记录自己!
展开
-
返回指向函数的指针
废话不多说,解释都在注释中//返回指向函数的指针#includeusing namespace std;//用传统方法定义类型别名typedef int func1(int, int);//func1是函数类型typedef int(*pfunc1)(int, int);//pfun1是指针类型func1 *fun1(int, int);pfunc1 fun2(原创 2017-03-03 16:55:45 · 653 阅读 · 0 评论 -
c++ 用模板和异或实现交换任何类型值
//c++ 用模板和异或实现交换任何类型值#includeusing namespace std;templatevoid BitSwap(T* a, T* b){switch (sizeof(*a)){case 1:*(char *)a ^= *(char *)b;*(char *)b ^= *(char *)a;*(char *)a ^= *(cha原创 2017-04-17 18:24:00 · 1003 阅读 · 0 评论 -
类模板初尝
#pragma once//Caculate.htemplate class Caculate{public:Caculate() = default;Caculate(const T& a, const T& b) :first(a), second(b){}Caculate(const Caculate& c);Caculate(Caculate &&)noex原创 2017-04-13 17:28:00 · 279 阅读 · 0 评论 -
C++ 浅谈emplace_back及误区
今天做c++ primer题目实现标准库vector,emplace_back忽然发现我对其了解甚少,首先,我在网上找到答案的代码,之前有过了解emplace_back是通过移动构造函数实现的,那么问题来了,如果我想实现vector b这样,我将其移动构造函数显式删除,那么b.emplace_back(....),还能工作吗? 答案是 : 能//Base.h#includeclas原创 2017-04-18 15:05:59 · 9404 阅读 · 0 评论 -
c++ 常用标准类型转换模板
//常用标准类型转换模板#include#includeusing namespace std;int main(){//对于模板参数T//remove_reference将X&& 或 X& 转换为 X,其他保持不变typename remove_reference::type a = 2;cout //add_const 除X& const X&,函数外是原创 2017-04-16 17:47:38 · 1209 阅读 · 0 评论 -
c++ std::forward
#include#includeusing namespace std;template//采用引用折叠方式,使其对所有方式参数适用void filp(F f, T1 &&t1, T2 &&t2){f(std::forward(t2), std::forward(t1));}void f(int v1, int &v2){cout }void g原创 2017-04-16 22:45:10 · 500 阅读 · 0 评论 -
c++ 重新抛出异常
//Rethrowing 实质还是异常的嵌套#includeusing namespace std;int main(){try{try{exception e("It's my error");cout throw e;}catch (exception &e){cout //可改变异常的状态//正是c++ primer 中所提及的原创 2017-05-04 14:19:03 · 1096 阅读 · 0 评论 -
c++ 模板实现多种排序
//用模版实现排序:冒泡排序,鸡尾酒排序,选择排序//后续排序持续更新#include#includeusing namespace std;//用模版实现排序//冒泡排序templatevoid BubbleSort(T &&b, T &&e, string com = "{size_t size = e - b;bool flag = true;原创 2017-04-22 23:33:02 · 504 阅读 · 0 评论 -
c++ 多重继承(包含虚继承)重载operator==
使用dymaic_cast typeid 虚函数 对operator ==进行重载//Animal.h#pragma once#include<string>using std::string;namespace Marco{ class Animal { friend bool operator ==(const Animal& lhs, const An原创 2017-05-05 21:12:14 · 1723 阅读 · 0 评论 -
c++ typeid对多种类型名称的输出
includeusing namespace std; class B { public: B() = default; B(int b) :a(b) {}; private: int a; }; enum class color { red = 1, yellow = 5, green = 9 }; int main() { int a =原创 2017-05-05 22:00:29 · 2616 阅读 · 0 评论 -
c++ 深入理解拷贝与赋值及其他合成函数
//Kind.h#pragma once#include//为了更直观声明定义放一块了using namespace std;class Kind{public://默认构造函数Kind() = default;//拷贝构造函数Kind(const Kind &kind){ cout //重载拷贝赋值运算符void operator = (con原创 2017-04-02 16:02:53 · 324 阅读 · 0 评论 -
深刻理解继承中构造函数和析构函数
/*通过下列代码,打开和注释会发现不同结果,由此可解释基类的析构函数为什么是虚函数:理由:如果基类的析构函数不是虚函数,那么析构派生类就会先析构基类再析构派生类,这显然与析构函数的设计理念不符结论: 通过结果可得到c++ primer 第五版 555页warning:在默认情况下,基类默认构造函数初始化派生类对象的基类部分。如果我们想拷贝(或移动)基类部分,则必须在派生类的原创 2017-04-09 21:46:54 · 336 阅读 · 0 评论 -
C++ Primer(第五版) 6.7练习综合版
//C++ Primer(第五版) 6.7练习综合版 #include#includeusing namespace std;using pfunc = int(*)(int, int);int sum(int,int);int subtract(int, int);//subtract 减 //学编程可以学英语int consult(int, int);// cons原创 2017-03-03 17:48:14 · 569 阅读 · 0 评论 -
函数参数为函数指针
//函数参数为函数指针#includeusing namespace std;//C++ 11 方法声明类型别名具体可看我的其他博文using pfunctype = int(int, int);//做函数参数的函数指针//声明int (*pfunc)(int, int);//注意 :int *pfunc(int,int);这样定义是一个普通函数返回一个int型的指针原创 2017-03-03 18:27:48 · 686 阅读 · 0 评论 -
Qt5 5种connect
//Qt5 5种connect()#include#include#include#include//1.connect(const QObject *,const char *,const QObject&,const char*,Qt::ConnectType);//2.connect(const QObject *,const QMetaMethod &,const原创 2017-03-19 21:28:35 · 3715 阅读 · 0 评论 -
C++ 返回数组的引用
话不多说解释都在代码里,接下来上代码//返回值是数组名的声明方法#includeusing namespace std;int arrone[] = { 1,2,3,4,5 };int arrtwo[] = { 6,7,8,9,10 };//利用传统方法定义类型别名typedef int iarr1[5];//利用C++11定义类型别名using iarr2原创 2017-02-27 15:25:32 · 1747 阅读 · 0 评论 -
C++ 返回指向数组的指针
返回值为指向数组的指针的目前所有方法,解释在注释里,接下来上代码//返回数组指针#includeusing namespace std;int iarr1[] = { 1,2,3,4,5 };int iarr2[] = { 6,7,8,9,10 };//传统类型别名声明typedef int parr1[5];//C++11类型别名声明using parr2原创 2017-02-27 16:36:02 · 906 阅读 · 0 评论 -
STL C++ Primer算法总结(一)
//STL C++ Primer 算法总结(一)#include#include#include//count()#include#include#include//accumulate()#includeusing namespace std;int main(){vector a = { 1,2,3,4,5,6,7,8,9,10 };//find原创 2017-03-12 14:23:15 · 653 阅读 · 0 评论 -
Qt5 渐变
void MainWindow::paintEvent(QPaintEvent *event){ QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing,true); painter.save(); //线性渐变 QLinearGradient linearGra原创 2017-03-29 15:41:51 · 766 阅读 · 0 评论 -
c++ primer 11.2.2练习11.9
#include#include#include#include#include#includeusing namespace std;int main(){ map> a; ifstream in("Text.txt"); string line; string word; string s; cin >> s; size_t n = 0; while (getl原创 2017-03-29 17:30:46 · 499 阅读 · 0 评论 -
标准库定义的函数对象
//标准库定义的函数对象#include#includeusing namespace std;int main(){//算术//加法 plusplus a;int sum = a(10,20);cout //减法 minusminus b;int minus = b(10, 20);cout //乘法 multipliesmulti原创 2017-04-08 12:01:22 · 459 阅读 · 0 评论 -
c++ lambda
#include<iostream>using namespace std;//定义lambdaauto f = [] {cout << "hello lambda" << endl; };void lambda(){ int a = 4; int b = 3; //若使用[=]捕获时不能对a,b修改 [&] { ++a;原创 2017-05-06 11:51:32 · 443 阅读 · 0 评论