C/C++:C++伪函数

C++伪函数:

所谓的伪函数。就是说它不是一个真正的函数,而是一个类或者说是一个结构体。

<span style="font-size:18px;">

#include <iostream>

void say_hello(){
    std::cout << "hello world !" << std::endl;
}

class Hello{

public:

    void operator () (){
         std::cout << "hello cpp !" << std::endl;
    }//重载运算符();

};

int main()
{
    say_hello();
    Hello p;
    p();

    return 0;
}
</span>

像代码中的say_hello()调用就是我们寻经常使用的函数调用。而我们用Hello定义的p。

然后p(),也就是我们所说的伪函数。而伪函数到底有什么优点或者说是优点呢?

它长处就在于,它能够传递。像用Hello来定义一样,它就想一个变量一样。方便。

并且还能被其它的类和成员所调用。我们寻常写的普通函数,则仅仅能依靠全局变量了。

时间: 2024-10-10 13:17:21

C/C++:C++伪函数的相关文章

for_each与伪函数

1.for_each就是封装好的循环遍历函数.共三个参数,前两个为迭代器,最后一个参数为函数指针或者伪函数. 函数原型如下(effective stl): template< typename InputIterator, typename Function > Function for_each( InputIterator beg, InputIterator end, Function f ) { while ( beg != end ) f( *beg++ ); } 2.伪函数就是重载

C++之伪函数

伪函数是通过类的操作符重载实现的,主要用于回调函数 class Eat { public: void operator()() { cout << "eat food" << endl; } }; 调用方式为: Eat eat; eat(); 输出结果: eat food请按任意键继续. . .

学习笔记---C++伪函数(函数对象)

C++里面的伪函数(函数对象)其实就是一个类重载了()运算符,这样类的对象在使用()操作符时,看起来就像一个函数调用一样,这就叫做伪函数. class Hello{ public: void operator()() //第一个()表示操作符,第二个表示函数参数列表 { cout<<"hello"<<endl; } }; int main() { Hello h; h(); //伪函数,其实h是一个类对象,看起来像函数 } 我们可以用函数对象,作为函数回调,把对

next() 伪函数

串行,第一个完成后,去执行第二个第二个异步任务,使用next()尾函数.首先我么想完成三个任务,task1,task2,task3,如图: 实现方式1: var fs = require("fs"); function task1(){ fs.readFile('./a.txt',function(err,data){ console.log(data.toString()); task2(); }) } function task2(){ fs.readFile('./b.txt',

使用#define定义字面值和伪函数

#define是C语言提供的宏定义命令,能够为程序员提供一定方便,在一定程度上提高程序的执行效率. 在程序中,有效范围为宏定义之后的本源文件结束,在此文件范围内有效.另外,用#undef可以终止宏定义的作用域,可灵活控制宏定义的作用范围. (1)#define定义的常量无数据类型,只是简单的字符替换,没了类型的安全检查,且有时还会产生边际效应. e.g:#define N100 #define M 200+N 当程序中使用M*N时,期望的结果是100*(200+N),实际结果是100*200+N

C++ 基础知识

1 C++面向对象 1 // 2 // Created by Mr.Z on 2016/3/2 0002. 3 // 4 5 #ifndef L01OOP_PEOPLE_H 6 #define L01OOP_PEOPLE_H 7 8 #include <iostream> 9 class People { 10 public: 11 void sayHello(); 12 }; 13 14 15 #endif //L01OOP_PEOPLE_H 1 // 2 // Created by Mr.

HOOK钩子技术5 SSDT Inline Hook

原理 内联钩子的原理在R3和R0下是相同的,就是不改变SSDT表项,而是改变函数内部前几条指令. 内联钩子的典型伪函数为: 恢复原指令 执行目标操作,或改写参数 执行原函数 返回时重新挂钩 demo #include "stdafx.h" #ifdef __cplusplus extern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)

从底层简析Python程序的执行过程

摘要:是否想在Python解释器的内部晃悠一圈?是不是想实现一个Python代码执行的追踪器?没有基础?不要怕,这篇文章让你初窥Python底层的奥妙. [编者按]下面博文将带你创建一个字节码级别的追踪API以追踪Python的一些内部机制,比如类似 YIELDVALUE.YIELDFROM操作码的实现,推式构造列表(List Comprehensions).生成器表达式(generator expressions)以及其他一些有趣Python的编译. 关于译者:赵斌, OneAPM工程师,常年

STL - set和multiset

set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列.元素插入过程是按排序规则插入,所以不能指定插入位置. set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树.在插入操作和删除操作上比vector快. set不可以直接存取元素.(不可以使用at.(pos)与[]操作符). multiset与set的区别:set支持唯一键值,每个元素值只能出现一次:而multiset中同一值可以出现多次. 不可以直接修改set或multiset容器中的