【Effective C++ 43,44】教程文章相关的互联网学习教程文章

C++ 二维码生成【代码】

二维码生成类// QR_Encode.h : CQR_Encode 僋儔僗愰尵偍傛傃僀儞僞乕僼僃僀僗掕媊 // Date 2006/05/17 Ver. 1.22 Psytec Inc.#if !defined(AFX_QR_ENCODE_H__AC886DF7_C0AE_4C9F_AC7A_FCDA8CB1DD37__INCLUDED_) #define AFX_QR_ENCODE_H__AC886DF7_C0AE_4C9F_AC7A_FCDA8CB1DD37__INCLUDED_#if _MSC_VER > 1000 #pragma once #endif// _MSC_VER > 1000/////////////////////////////////////////////////////////////////////...

c++ shared_ptr储存this指针多次析构问题之enable_shared_from_this解决方案【代码】

#include <iostream> #include <memory> #include <cassert> /*//this //调用了两次析构函数,ParentPtr p(this);//智能指针出了作用域后就delete this ,析构了//所以错了,为了解决这个问题,就需要自身的类继承于 std::enable_shared_from_this<Type>//将ParentPtr p(this) 换成, shared_from_this();*/ class Parent; typedef std::shared_ptr<Parent> ParentPtr; typedef std::weak_ptr<Parent> WeakParentPtr;class Child : pub...

C++实现单客户单线程

一个客户一个子线程,也是阻塞式网络编程,它的初始化要比一个客户一个进程模型开销要小;但是仍适合于长连接,不适合短连接、并发数不大的情况,尤其不适合pthread_create()的开销大于本身服务的情况;编程模型 (1)并发服务器1,类似于一个客户一个进程的并发服务器1,它通常阻塞在accept,阻塞返回后派生一个子线程来处理每个客户端,每一个客户一个线程,创建线程的开销比fork()要低,进程的地址空间在线程内共享;(注:fork...

【C/C++学院】0816-引用包装器/仿函数/转义字符 R”()”/using别名/模板元编程 比递归优化/智能指针/多线程/静态断言以及调试技能的要求 assert

引用包装器 std::ref(变量)#include<iostream>template<class T> void com(T arg)//模板函数,引用无效,引用包装器 {std::cout <<"com ="<< &arg << "\n";arg++; }void main() {int count = 10;int & rcount = count;com(count);std::cout << count << std::endl;//std::ref(变量) ,函数模板,引用包装器//com(std::ref(count));com(rcount);std::cout << "main=" << &rcount << "\n";std::cout << count << std::endl;std::cin...

C++学习笔记2【代码】

动态内存分配其实在学C语言的时候,我们就已经用malloc函数去实现了,当然在C++里也有新的方法。 今天学习的是在C++环境下的动态内存的分配。用new运算符实现动态内存分配有这么两种用法: 1.分配一个变量 exp.P=new T; 其中 T:任意类型名 P:类型为T*的指针 动态分配出一片大小为sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。 exp.int *pn; pn=new int; *pn=5;2.分配一个数组 exp.P=new T[N]; 其中 T:任意类型...

【c++程序】抽象类的应用

#include<iostream> using namespace std; class Shape { public:virtual double area()=0;//纯虚函数 }; class Trigon:public Shape { public:Trigon(double H,double W){h=H;w=W;}double area(){return h*w/2;} protected:double h,w; }; class Square:public Trigon { public:Square(double H,double W):Trigon(H,W){}double area(){return h*w;} }; class Cricle:public Shape { protected:double radius; public:Cricle(doub...

[转]C++ string的trim, split方法

很多其他语言的libary都会有去除string类的首尾空格的库函数,但是标准C++的库却不提供这个功能。但是C++string也提供很强大的功能,实现trim这种功能也不难。下面是几种方法: 1.使用string的find_first_not_of,和find_last_not_of方法<div bg_cpp"="" style="width: 936.53125px; line-height: 26px;">[cpp] view plaincopy/* Filename : StringTrim1.cpp Compiler : Visual C++ 8.0 Description : Demo how to trim string ...

[c++]默认参数

=================默认参数==================在函数声明时表明默认值,在函数定义时正常定义void function(int a = 2)// 函数声明void function(int a)//函数定义{ //code....}具体规则1.默认参数在声明中给出或者在定义中给出(默认参数可以放在函数声明或者定义中,但只能放在二者之一)2.形参的参数名可以省略 例如 void function(int =2)3.默认声明后不得再次尝试声明来试图更改默认值4.函数的参数的默认值只能从后向前设置 出...

c++ 面试基本知识点整理(1)【代码】

目录2. 什么是虚拟构造函数以及析构造函数2.1 虚函数的实质2.2 基类的析构函数必须用虚函数2.3 以下函数不能使用虚函数1)普通函数2)友元函数3)静态成员函数4)构造函数,拷贝函数5)内联函数;3. 如何定义一个抽象类2.引入原因3.抽象类4.抽象类的规定6.虚函数和纯虚函数有以下所示方面的区别7.抽象类与接口得区别4. 拷贝构造函数的定义4.1 拷贝构造函数的使用4.2 使用场景4.3 编译原理4.4 浅拷贝与深拷贝5. 重载与重写的区别ove...

C++中String的使用

header files:#include <string> // use String Object you should leading-in it (ps:not string.h,the string.h is belong to the C)#include <iostream> // the input and output of C++。using namespace std;the output and input of String should use the function cin and cout. (ps:cout not count).Thanks for the XFreedomhttp://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html原文:http://ww...

c++,初始化列表

类对象的构造顺序是这样的:  a.分配内存,调用构造函数时,隐式/显示的初始化各数据成员  b.进入构造函数后在构造函数中执行一般计算 1.初始化类的成员有两种方式,一是使用初始化列表,二是在构造函数体内进行赋值操作。使用初始化列表主要是基于性能问题. [参考C++ 初始化列表 http://www.cnblogs.com/graphics/archive/2010/07/04/1770900.html。]  对于内置类型,如int, float等,使用初始化类表和在构造函数体内初始...

c++ 正则表达式邮箱【代码】

下载库与参考阅读:http://www.wuzesheng.com/?p=929参考:http://blog.csdn.net/wwy851/article/details/6047321//----------------------------------------用GNU正则表达式库或者用boost正则表达式库。#include >iostream>#include >cstdlib>#include >string>#include >regex> // regular expression 正则表达式using namespace std;int main ( ) { string email_address; string user_name, domain_name; regex pat...

[转] C++ STL中map.erase(it++)用法原理解析【代码】

总结一下map::erase的正确用法。 首先看一下在循环中使用vector::erase时我习惯的用法:for(vector<int>::iterator it = vecInt.begin(); it != vecInt.end();) {if(*it == 0){it = vecInt.erase(it);}else{it++;} }程序从一个vector中删除值为0的元素,利用了vector::erase函数根据iterator删除某个元素时会返回下一个元素的iterator的性质: http://www.cplusplus.com/reference/vector/vector/erase/C++98 iterator erase (iterat...

二叉搜索树(C++)

#include <iostream>using namespace std;typedef struct BiTNode{int data;struct BiTNode *lchild, *rchild; }BiTNode,*BiTree;class solution{ public:bool searchBst(BiTree root, int key, BiTree f, BiTree *p){if (!root){*p = f;return false;}else if (root->data == key){*p = root;return true;}else if (key < root->data){searchBst(root->lchild, key, root, p);}else{searchBst(root->rchild, key, root, p);}}bool...

深度探索c++对象模型 完整pdf中文版下载【图】

【原书名】 Inside the C++ Object Model 【原出版社】 Pearson Education 【作者】 (美)Stanley B.Lippman 【丛书名】 深入C++系列 【出版社】 中国电力出版社 第一代C++编译器开发主管所写。如果你想成为真正的C++高手,看这本书,他为你讲述了编译器在处理各种语法时在“后台”所做的事。对C++有较深入了解的读者会在读后有恍然大悟之感。候杰翻译,质量相当不错,但内容太深,只适合对C++有较深了解的读者,价...