C++/STL/Boost/OpenGL/VTK
无
✇易木残阳
We know nothing about the world. I'm more than a Qter.
open source、sharing、free.
展开
-
C++对象之间通信的几种方式
第一种:直接调用(强耦合、循环嵌套)#include <iostream>using namespace std;class CouplingB{public: void HandleMessage(int i) { cout << i << endl; }};class CouplingA{public: void SendMessage(int i) { m_b.Handl原创 2020-12-30 17:51:12 · 3980 阅读 · 1 评论 -
编译器优化
观察以下代码#include <iostream>using namespace std;class Copyable {public: Copyable(){} Copyable(const Copyable &o) { cout << "Copied" << endl; }};Copyable ReturnRvalue() { return Copyable(); //返回一个临时对象}void原创 2020-11-11 16:07:20 · 190 阅读 · 0 评论 -
C++综合系列之实现回调机制的几种方式
/* 方式一:回调函数 */typedef void (*CallbackFun)(int i);//调用者void test(int i, CallbackFun callback){ callback(i);}//被调用者void func(int i){ cout << i << endl;}void main(){ test(2, func);}/* 方式二:Sink *//*对方要求的接口*/// 中介接口(中介器)原创 2020-07-29 10:40:13 · 340 阅读 · 0 评论 -
异常处理
例一:#include<iostream>using namespace std;//double div(double x, double y) throw(int, double) //限制抛出的类型,如不匹配,直接抛给内核//double div(double x, double y) throw() //直接抛给内核double div(double x, double y) //没有原创 2017-06-06 15:44:15 · 293 阅读 · 0 评论 -
泛型与非泛型组合
#include<iostream>using namespace std;template<class T, int MAXSIZE>class Array{public: Array() { head = new T[MAXSIZE]; cout << "MAXSIZE:" << MAXSIZE << endl; } ~Ar原创 2017-06-07 10:25:52 · 345 阅读 · 0 评论 -
类模版之偏特化
//类模板(模板定义以关键字template开始,后接尖括号括住的模板形参表,形参前用class或者typename关键字修饰)template<class T1, typename T2>class Compare{public: Compare(T1 x = 0, T2 y = 0) :x(x), y(y) { } bool isEqual(原创 2017-06-07 10:20:32 · 544 阅读 · 0 评论 -
类模版
#include<iostream>using namespace std;//类模板(模板定义以关键字template开始,后接尖括号括住的模板形参表,形参前用class或者typename关键字修饰)template<class T1, typename T2>class Compare{public: Compare(T1 x = 0, T2 y = 0) :原创 2017-06-07 09:58:00 · 333 阅读 · 0 评论 -
类模版之全特化
//类模板(模板定义以关键字template开始,后接尖括号括住的模板形参表,形参前用class或者typename关键字修饰)template<class T1, typename T2>class Compare{public: Compare(T1 x = 0, T2 y = 0) :x(x), y(y) { } bool isEqual(原创 2017-06-07 10:05:21 · 375 阅读 · 0 评论 -
ostream之clog
ostream之clog原创 2017-06-06 16:35:47 · 399 阅读 · 0 评论 -
ostream之cerr
ostream之cerr原创 2017-06-06 16:35:19 · 393 阅读 · 0 评论 -
map
#include <iostream>#include <map>#include <string>using namespace std;template<class t1, class t2>void outMap(map<t1, t2> &m){ typename map<t1, t2>::iterator it; for (it = m.begin(); it !=原创 2017-06-06 16:13:29 · 249 阅读 · 0 评论 -
vector
#include<iostream>#include<vector>using namespace std;void traversalByIndex(vector<int> &v){ try{ for(unsigned int i=0; i < v.size(); i++) { //cout<<v[i]<<endl;原创 2017-06-06 16:10:08 · 328 阅读 · 0 评论 -
C++综合系列之构造函数执行于main函数之前
#include<iostream>using namespace std;class Pre_Main{public: Pre_Main() { cout << "I'm before main!" << endl; } ~Pre_Main() { cout << "I'm after main!" << endl;原创 2017-06-06 14:39:34 · 1121 阅读 · 0 评论 -
函数重载、重写(覆盖)和重定义(隐藏)
函数重载、重写(覆盖)和重定义(隐藏)原创 2017-06-06 11:49:52 · 439 阅读 · 0 评论 -
函数模版
#include<iostream>using namespace std;//函数模板(模板定义以关键字template开始,后接尖括号括住的模板形参表,形参前用class或者typename关键字修饰)template<class T>inline T add(T x,T y)//函数模板也可以声明为inline{ return x+y;}void main(){ /原创 2017-06-07 10:36:37 · 318 阅读 · 0 评论 -
函数模版之全特化
#include<iostream>using namespace std;//函数模板(模板定义以关键字template开始,后接尖括号括住的模板形参表,形参前用class或者typename关键字修饰)template<class T1, typename T2>inline T1 add(T1 x, T2 y)//函数模板也可以声明为inline{ return x+y;}/原创 2017-06-07 10:47:14 · 610 阅读 · 0 评论 -
关键字之this
TBD原创 2018-12-07 17:16:33 · 183 阅读 · 0 评论 -
关键字之操作符(运算符)
C++操作符: new和delete const_cast、static_cast、dynamic_cast、reinterpret_cast和operator+、=、<<等new和deleteint *ptr = new int;*ptr = 10;delete ptr;ptr = NULL;delete ptr;//if set ptr equalto NULL after del原创 2017-06-04 20:29:32 · 526 阅读 · 0 评论 -
C++综合系列之模拟单链表模版
list.h#ifndef _LIST_H_#define _LIST_H_#include<iostream>using namespace std;class List;class Node{ private: int value; Node *next; public: Node() {原创 2017-06-06 16:49:57 · 438 阅读 · 0 评论 -
C++/STL/Boost纲要
1. 基础语法1-1. 关键字1-1-1. 关键字之标识符1-1-2. 关键字之数据类型1-1-3. 关键字之操作符(运算符)1-1-3. 关键字之其他1-1-3-1. 关键字之命名空间1-1-3-2. 关键字之异常处理1-2. 函数默认参数2. 面向对象2-1. 封装(encapsalution)2-2. 继承(inheritance)2-2-1. 单继承2-2-2. 多继承2-2-3. 虚继承和原创 2017-05-31 16:49:51 · 595 阅读 · 0 评论 -
关键字之标识符
const const int i=10; //int *p=&i; //error //const-->const //非const-->const //const 不能-->非const const int* ptr=&i;//1 int *p2=(int*)&i;//2 *p2=20; cout<<"原创 2017-06-02 16:32:02 · 400 阅读 · 0 评论 -
C++综合系列之模拟栈模版(数组版及单链表版)
C++综合系列之模拟栈模版(链表版)原创 2017-06-29 17:02:17 · 452 阅读 · 0 评论 -
c++模版声明定义及使用方式
三种方式: (1)模板的声明和定义都放置在同一个.h文件中(最佳)。 (2)声明和实现分离,包含.cpp文件。注意:不是所有编译器都支持此做法。 (3)使用export使声明实现分离。注意:并非所有编译器都支持export关键字,且性能差。原创 2017-06-29 17:00:47 · 567 阅读 · 0 评论 -
ostream之cout
ostream之cout原创 2017-06-06 16:34:56 · 1035 阅读 · 0 评论 -
istream之cin
io之istream原创 2017-06-06 16:34:22 · 597 阅读 · 0 评论 -
函数模版之重载
//函数模版重载:1.模板和模板 2.模板和函数#include<iostream>using namespace std;template<class T>void add(T x, T y){ cout << "add(T, T)" << endl;}template<class T>void add(T x, T y, T z){ cout << "add(T,原创 2017-06-07 10:52:37 · 394 阅读 · 0 评论 -
构造、拷贝(复制)构造、赋值构造以及析构
#include<iostream>using namespace std;class Human{public: Human(){ cout << "construct : " << ++human_num << endl; } Human(const Human &){ cout << &am原创 2017-06-06 11:18:42 · 562 阅读 · 0 评论 -
静态成员
#include&amp;lt;iostream&amp;gt;using namespace std;class A{ public: A() { cout&amp;lt;&amp;lt;&amp;quot;A()&amp;quot;&amp;lt;&amp;lt;endl; count+原创 2017-06-05 10:41:58 · 328 阅读 · 0 评论 -
内部类
#include<iostream>using namespace std;class Outer{ public: //如果此时Inner被private修饰,则下面Outer::Inner in 就不能创建出对象来 class Inner { public: void setOut原创 2017-06-05 10:13:42 · 307 阅读 · 0 评论 -
深拷贝和浅拷贝
C++对于指针型成员变量有浅拷贝和深拷贝之分#include <string>#include<iostream>using namespace std;class Person{public: Person(){ cout << "Person()" << endl; } Person(string name, int age) :name(name), ag原创 2017-06-05 09:58:52 · 327 阅读 · 0 评论 -
函数默认参数
C++支持函数默认参数//从一开始设置默认参数后面的所有参数都要设置,不能间断的设置,尽量把越必要的参数放在前面void fun(int hour,int min,int sec=0){ cout<<"hour:"<<hour<<endl; cout<<"min:"<<min<<endl; cout<<"sec:"<<sec&原创 2017-06-05 09:23:33 · 258 阅读 · 0 评论 -
C++关键字之dynamic_cast
#include <iostream>#include "vld.h"using namespace std;class Shape{public: Shape(){ cout << "Shape()" << endl; } virtual ~Shape(){ cout << "~Shape()" << endl; } virtual void fun(){ cout <<原创 2017-05-30 23:19:35 · 618 阅读 · 0 评论 -
C++11之lambda
test原创 2017-05-30 23:22:06 · 372 阅读 · 0 评论 -
C++11之std::function和std::bind
#include <functional>#include <iostream>using namespace std;/* 类模版std::function是一种通用、多态的函数封装。 std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,这些目标实体包括普通函数、Lambda表达式、函数指针、以及其它函数对象等。 std::function对象是对C原创 2017-05-30 23:25:24 · 495 阅读 · 0 评论 -
C++11之智能指针(shared_ptr、unique_ptr以及weak_ptr)
#include <iostream>#include <memory>//c++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被c++11弃用。//为什么要使用智能指针:我们知道c++的内存管理是让很多人头疼的事,当我们写一个new语句时,一般就会立即把delete语句直接也写了,//但是我原创 2017-05-30 23:30:10 · 477 阅读 · 0 评论 -
C++乱编系列之情人节单身狗
#include<iostream>using namespace std;class Object{public: Object() {} virtual ~Object() {}};class GirlFriend;class BoyFriend : public Object{public: BoyFriend() : girlFriend(NULL) {原创 2017-05-30 23:33:42 · 729 阅读 · 1 评论 -
关键字之命名空间
C++命名空间: namespace:声明一个命名空间 using:使用一个命名空间原创 2017-06-04 23:01:01 · 655 阅读 · 0 评论 -
关键字之数据类型
c++新增数据类型bool等,并且新增相对应引用数据类型。 //bool bool flag; cout<<"sizeof(bool):"<<sizeof(bool)<<endl;//1 cout<<"flag:"<<flag<<endl;/原创 2017-06-02 16:28:05 · 359 阅读 · 0 评论 -
C++综合系列之模拟事件机制
event.h#include <iostream>#include <string>using namespace std;#define DEF_EVENT_TYPE( etype ) \ class _CEvent##etype##_leveling_ \ { \ public: \ virtual void D原创 2017-05-30 23:28:59 · 502 阅读 · 0 评论 -
指针、值和引用传递的区别
#include <iostream>using namespace std;class A{ public: A() { cout << "A()" << endl; } A(const A &a) { cout << "A(const A&)" << e原创 2017-06-05 11:40:54 · 274 阅读 · 0 评论