函数 仿函数
[TOC] 1. 仿函数 在 C++ 中,仿函数(也称为函数对象)通过重载 operator()的实例,使一个类的实例表现得像一个函数。1 2. 仿函数的优势 状态保持:与普通函数相比,仿函数可以保持状态。你可以在类中定义成员变量来存储信息,并在operator()调用中使用这些信息。 灵活性:由于它们是类的实例,仿函数可以拥有构造函数和析构函数,...
[TOC] 1. 仿函数 在 C++ 中,仿函数(也称为函数对象)通过重载 operator()的实例,使一个类的实例表现得像一个函数。1 2. 仿函数的优势 状态保持:与普通函数相比,仿函数可以保持状态。你可以在类中定义成员变量来存储信息,并在operator()调用中使用这些信息。 灵活性:由于它们是类的实例,仿函数可以拥有构造函数和析构函数,...
[TOC] 匿名函数(lamda函数) 一个lamda函数的格式为: [capture](parameters)->return_type{/*...*/}; [capture]: 捕获列表(Capture List),决定了函数在定义时能够访问和使用哪些外部变量。1 []:空捕获列表,表示 lambda 函数不捕获任何外部变量,只能使用函数内部的...
[TOC] 1. 函数指针 1.1 含义 函数指针(Function Pointer)用于实现动态函数调用、回调函数、函数指针数组。 普通函数指针: int normal_func(int x) { /* ... */ } // 它的类型是:int (*)(int) // 可以直接用函数指针存储: int (*func_ptr)(int) = &normal_func; f...
[TOC] 类的默认函数 只声明一个空类,不做任何事情的话,编译器会自动生成一系列默认的合成函数,所有这些函数都是 inline 和 public 的。并且这些函数的定义并不是无条件生成的,惟有当这些函数被调用时才会被编译器创建出来。1 class Empty { };//定义了一个空类,无任何成员 //等同于以下定义 class Empty { public: Empty()...
[TOC] C++ explicit:从隐式转换到实际使用 explicit 最常见的用途,是修饰构造函数,阻止编译器通过这个构造函数进行隐式转换。 先记住一句话:你仍然可以主动调用构造函数,但编译器不能在需要类型转换时自动替你调用它。 1. 什么是隐式转换 隐式转换,就是你没有明确写出转换操作,编译器自动把一种类型转换成另一种类型。 int a = 10; double...
[TOC] 1. __declspec 1.1__declspec(dllexport) :导出 也就是导出格式:在dll头文件中相关内容前使用的关键字,表明该dll中相关的代码(类、函数、全局变量)会暴露给其他应用程序使用。 1.2 __declspec(dllimport) :导入 也就是引入项目:在其他工程中要使用该dll中相关内容时,在前面增加的关键字。 以下是一个定义在...
[TOC] using关键字在现代C++中非常有用,特别是在涉及模板编程和泛型编程时,它可以与别名模板结合来使代码更加清晰和容易维护。由于using让代码更加符合直觉,其在类型定义和命名空间管理方面比传统的typedef和单独的命名空间声明更受欢迎。1 1、声明命名空间 “using” 关键字最为人熟知的用途之一就是简化命名空间2的使用。 using声明可以将命名空间中的特定成员引入...
[TOC] typedef //2024年2月6日-HSB 待补充 示例1:成员函数指针 typedef 实例 TKClassFunctor.h 中的源码: template<class CS, class ret_type, class arg_type> class function_impl : public function_base<ret_type,...
[TOC] static_assert static_assert 是 C++11 引入的一项特性,用于在编译时进行断言检查。1 这意味着你可以在编译代码时检查某些条件是否为真,如果条件不满足,编译器将停止编译过程并显示一条错误消息。 这对于调试、验证模板元编程中的类型约束或强制执行特定的编译时条件非常有用。 static_assert 的用法非常简单,它有两个参数,语法如下: ...
[TOC] 1. static变量 1.1 静态局部变量 static关键字在局部变量中的应用是其最常见的用法之一。 静态局部变量仅在函数第一次调用时初始化,而在函数调用结束后仍然保留其值。 这对于需要在多次调用之间保留状态的函数非常有用。 #include <iostream> void demoStaticLocalVariable() { static ...