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

C++学习笔记15:操作符重载的函数原型列表(推荐)【代码】

//普通四则运算 friend A operator +(const A & lhs, const A & rhs); friend A operator -(const A & lhs, const A & rhs); friend A operator *(const A & lhs, const A & rhs); friend A operator /(const A & lhs, const A & rhs); friend A operator %(const A & lhs, const A & rhs); friend A operator *(const A & lhs, constint & rhs);//标量运算,如果存在 friend A operator *(constint & lhs, const A & rhs);//标量运...

C++里面的 RVO(Return value optimization)

在给 uSTL 里面的 vector 尝试加入 C++11 特性的时候,发现 move constructor 在 test case 里并没有调用,后来发现是因为 RVO 的原因。 RVO介绍:https://en.wikipedia.org/wiki/Copy_elision#Return_value_optimization 如果要关闭 RVO,给 g++ 加上 --no-elide-constructors原文:https://www.cnblogs.com/daghlny/p/9071219.html

2015级C++第7周项目 友元、共享数据保护、多文件结构【代码】

【项目1-成员函数、友元函数和一般函数有差别】參考解答(1)阅读以下的程序,体会凝视中的说明(要执行程序,请找到课程主页并复制代码)//例:使用成员函数、友元函数和一般函数的差别#include <iostream>usingnamespacestd; class Time { public:Time(int h,int m,int s):hour(h),minute(m),sec(s) {}void display1(); //display1是成员函数friendvoid display2(Time &); //display2是友元函数int getHour(){return hour;}int...

C++内部类与Java内部类都区别

首先声明一下,C++的内部类与Java内部类相似,但有一点不同,即C++需要一个显式的成员只想外部类对象,而Java内部类对象有一个隐式的成员指向外部类对象。给出两个example:1.C++内部类(原创来自:http://blog.chinaunix.net/uid-7769108-id-166762.html)#include<iostream>usingnamespacestd;class A{ public: A(): _a(10){} private: class B { public: void sho...

C++高性能服务器框架——日志系统

日志文件系统对文件系统进行修改时,需要进行很多操作。这些操作可能中途被打断,也就是说,这些操作不是“不可中断”(atomic)的。如果操作被打断,就可能造成文件系统出现不一致的状态。例如:删除文件时,先要从目录树中移除文件的标示,然后收回文件占用的空间。如果在这两步之间操作被打断,文件占用的空间就无法收回。文件系统认为它是被占用的,但实际上目录树中已经找不到使用它的文件了。在非日志文件系统中,要检查并修复...

[软件工程]自我介绍----一个小菜鸡的自我介绍(C++版 手动偷笑~)【代码】

#include “iostream” usingnamespace std; class Lee : protected MyMother,protected MyFather { private:string ChineseName("李怡龙");string EnglishName("Lee");int age = 20;string university("青海大学计算机系");string level("菜鸡"); protected:string GirlFriend("912571b7ae3ae24f42b296419c1b5584"); public:string GetMyInterests(){string one("喜欢新的硬件,什么kabe laky处理器啊,伏打显卡啊。。。只要是新产...

使用C++11新特性来实现RAII进行资源管理

方法一:借助auto、decltype、unique_ptr、Lambda表达式构造sqlite3 *db = NULL; auto deleter = [](sqlite3 *pdb){sqlite3_close(pdb);} int nRet = sqlite3_open16(L"F:\\my.db",&db); std::unique_ptr<sqlite3,decltype(deleter)> pdb(db,deleter);if(nRet) {//失败,但是这里不用担心资源管理了 } else { } //其他操作 //结束前,会动释放资源方法二:借助auto、decltype、bi...

C++ 编译器的安装(MinGW)

GNUGNU是一个自由软件工程项目,GNU工程已经开发了一个被称为“GNU”(GNU是“不是UNIX”的缩写)的、对Unix向上兼容的完整的自由软件系统(free software system)。http://www.gnu.org/ gcc与g++区别GCC:GNU编译器集合,涉及所有由GNU编译器所支持的不同的语言。GCC:GNU C编译器G ++:GNU C ++编译器GCC编译:.C/.cpp文件分别作为C和C ++。G ++编译:.C/.cpp文件,但他们都将被视为C++文件。此外,如果你使用G ++来链接目标文件,...

C++图像识别转灰度【代码】

1 #include <stdafx.h> 2 #include <stdio.h> 3 #include <string.h> 4 #include <math.h> 5 #include <windows.h> 6 using namespace std; 7 8 9 //将位图转换为256色灰度图 10 void ToGray(const string& srcFile,const string& desFile) 11 { 12 BITMAPFILEHEADER bmfHeader; 13 BITMAPINFOHEADER bmiHeader; 14 15 FILE *pFile; 16 if ((pFile = fopen(srcFile.c_str(),"rb")) == NULL) 17 ...

c++的强制类型转换【代码】

在C和C++中,强制类型转换时常出现,例如:void Test () { int i = 1; // 隐式类型转换 double d = i; printf("%d, %.2f\n" , i, d); int* p = &i; // 强制类型转换 int address = (int) p; printf("%x, %d\n" , p, address); }所以,强制类型转化时常存在,故而C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。它们分别是const_cast,static_cast,dynamic_cast,reinterpreter_...

C++智能指针【代码】

C++智能指针智能指针与异常 如果使用智能指针, 如果程序块过早的结束, 智能指针能保证在内存不再需要时进行释放. (特别是在有多个出口的函数中 -- 虽然应尽量避免设计这样的函数, 但凡事总有例外 -- 此时使用智能指针来自动释放内存是非常方便的) 对于异常处理来说, 考虑下面两个函数, 当程序发生异常时, 智能指针也能正确的释放内存.   void f3()   {     int* p = new int(10); ...

C/C++算法竞赛入门经典Page15 习题1-1 平均数【代码】

题目:输入3个整数,输出他们的平均值,保留3位小数。 首先,声明三个整数a,b,c和一个浮点数d:int a,b,c; double d;输入三个整数a,b,c:scanf("%d%d%d",&a,&b,&c);将a,b,c取平均值以后复制给d:d=(double)(a+b+c)/3;最后输出d:printf("%.3lf",d);%.3lf表示保留3位小数的long float。注意:不能直接这样输出:printf("%.3lf",(a+b+c)/3);否则会得到不正确的输出。完整代码://P15 习题1-1 平均数 //疑问:为什么不能直接printf("%.3lf",(a+b...

C++中vector小学习,顺便查了下<stdio.h>(或<cstdio>)【代码】

今天看书,邻桌在看《C++ Primer》,拿过来看了一会儿。以前比较少用vector容器,看了下后,瞬间觉得好腻害的样子,就想试一下。嗯,就是试一下而已。(代码可能网上都差不多,有参考)#include<iostream> #include<vector> //使用vector容器 #include<string>usingnamespace std;int _tmain(int argc, _TCHAR* argv[]) {vector<int> TestInt; //定义一个空的vector实例,int类型for (int i = 0; i < 5; i++){TestInt.pu...

LeetCode面试题 08.12. 八皇后---回溯算法解决N皇后问题(C++实现)【代码】

N皇后问题源于著名的八皇后问题:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法!将8x8扩展为NxN即为N皇后问题,要解决此问题,最简单的方法就是暴力枚举,此时的时间复杂度为N^2,回溯算法与简单暴力枚举类似,不同点在于当判定某种状态不符合答案时,便不再继续枚举此状态的后续状态,而是回溯到该状态之前,继续遍历其他的可能值。 1 #include <ios...

C++中的异常安全性【转】【代码】

原文写的非常好,来自这里一个函数如果说是“异常安全”的,必须同时满足以下两个条件:1.不泄漏任何资源;2.不允许破坏数据。 我们先通过两个反面的例子开始。 第一个是造成资源泄漏的例子。一个类Type,内含一个互斥锁成员 Mutex mutex,以及一个成员函数void Func()。假设Func函数的实现如下所示:void Type::Func() { Lock(&mutex); DoSomething(); UnLock(&mutex); } 首先是获得互斥锁,中间是做该做的事,最后...