C++拾遗--目录

前言

C++语言标准更新很慢,截止到本文为止,最新的是C++11和C++14标准。C++是一门很有魅力,但也的确很难的编程语言,能够称得上精通它的人的确不多。本序列不致力于写成C++的百科全书,而是基于最新标准对一些语言上的难点和易于被大多数人忽略的语言点,进行探讨--故名拾遗。

目录

1.lambda表达式

时间: 2024-10-06 19:02:32

C++拾遗--目录的相关文章

C++拾遗--多线程:临界区解决子线程的互斥

C++拾遗--多线程:临界区解决子线程的互斥 前言 为了解决子线程的互斥问题,windows系统提出了关键段或临界区(CRITICAL_SECTION)的概念.它一共有四个共两对操作:初始化.销毁,进入.离开.它们定义在头文件synchapi.h中. 1.初始化变量 VOID WINAPI InitializeCriticalSection( LPCRITICAL_SECTION lpCriticalSection ); 2.销毁变量 VOID WINAPI DeleteCriticalSect

C++拾遗--多线程:原子操作解决线程冲突

C++拾遗--多线程:原子操作解决线程冲突 前言 在多线程中操作全局变量一般都会引起线程冲突,为了解决线程冲突,引入原子操作. 正文 1.线程冲突 #include <stdio.h> #include <stdlib.h> #include <process.h> #include <Windows.h> int g_count = 0; void count(void *p) { Sleep(100); //do some work //每个线程把g_c

C++拾遗--定位new表达式

C++拾遗--定位new表达式 前言 new表达式,默认下把内存开辟到堆区.使用定位new表达式,可以在指定地址区域(栈区.堆区.静态区)构造对象,这好比是把内存开辟到指定区域. 正文 定位new表达式的常见形式 new(address) type; new(address) type(initializers); new(address) type[size]; new(address) type[size]{braced initializer list}; 定位new表达式调用 void

C++拾遗--malloc free与new delete的同与不同

C++拾遗--malloc free与new delete的同与不同 前言 在C中我们常使用malloc和free来动态分配与释放内存,在C++中对应的是new和delete.这里我们来探讨下他们的同与不同. 正文 1.内置类型 对相同的代码进行调试,查看内存 #include <iostream> using namespace std; int main() { int *p = (int*)malloc(sizeof(int) * 10); cout << p <<

C++拾遗--智能指针

C++拾遗--智能指针 前言 内存泄露是常见的问题,新标准中的智能指针从根本上解决了这个问题.所谓的智能指针,其智能性体现在:当没有对象使用某块动态分配的内存时,那就自动释放这片内存. 智能指针 下面这段程序可耗尽内存,导致程序崩溃. #include <iostream> #include <Windows.h> using namespace std; int main() { while (1) { //每次动态分配80M内存 double *p = new double[1

C++拾遗--引用

C++拾遗--引用 前言 引用就是别名(alias).所谓别名,就是对已存在的对象另起一个名字.本身含义并不难理解,但与其它概念一组合,就成了使用难点.再加上新标准提出了新的一种引用-右值引用,引用这一概念就变得更加难以理解和使用. 正文 随着新标准(新标准往往就是新的技术)的提出,引用这一概念分成两类:左值引用.右值引用.其中左值引用是最常用的一种,而右值引用则是语言使用上的一种革新. 1.左值引用 左值引用的基本语法 Type &引用名 = 左值表达式; #include <iostre

C++拾遗--new delete 重载

C++拾遗--new delete 重载 前言 new和delete是操作动态内存的一对操作.对它们重载可以对内存管理进行有效的定制. 正文 1.局部重载 特别针对某一类型,对new和delete进行重载,可以对该类型对象的动态创建实行监控.如下代码: 代码一 #include <iostream> using namespace std; class MyClass { public: MyClass() { cout << "MyClass()" <&

C++拾遗--模板元编程

C++拾遗--模板元编程 前言 模板元是用于递归加速的,把运行期的函数调用变到编译期进行代码展开,类似于内联函数.下面看一个实例:斐波那契数列第n项求解. 模板元编程 #include <iostream> #include <ctime> using namespace std; //递归法 int fib(int n) { if (n < 0) return 0; if (n == 1 || n == 2) return 1; return fib(n - 1) + fi

C++拾遗--函数重载

C++拾遗--函数重载 前言 函数重载似乎并不难,但仍有一些问题值得注意.下面从几个关键词入手: 正文 1.作用域 关于作用域,需要指出几点事实 用大括号{}括起来的区域处于同一作用域,常见的有函数体.for.if语句等. 同一作用域内不可出现同名的变量,若是函数同名,那就是函数重载问题.不同作用域内同名与否,没影响. 所有的函数之外的区域就是全局作用域. 首先需要指出,同一作用域中的函数才会出现重载问题.不同作用域中的函数即使是同名,且参数类型和返回值类型一致,也是两个不同的函数. 2.隐藏