首页 > 其他分享 >可包装对象

可包装对象

时间:2024-07-21 12:01:01浏览次数:11  
标签:const string show 包装 对象 int message cout

std::function模板类是一个通用的可调用对象的包装器,用简单的、统一的方式处理可调用对象。

#include <iostream>
#include<functional>
using namespace std;
void show(int age, const string& message)
{
	cout << "age " << age << "message " << message << endl;
}
class AA
{
public:
	static void show(int age, const string& message)
	{
		cout <<  "age " << age << "message " << message << endl;
	}
};
struct BB
{
	void operator()(int age, const string& message)
	{
		cout << "age " << age << "message " << message << endl;
	}
};
class CC
{
public:
	void show(int age, const string& message)
	{
		cout << "age " << age << "message " << message << endl;
	}

};
int main()
{
	using Fun = void(int, const string&);
	auto lb = [](int age, const string& message)
		{
			cout << "age " << age << "message " << message << endl;
		};
	function<void(int, const string&)> fn1 = show;
	function<void(int, const string&)> fn2 = AA::show;
	function<void(int, const string&)> fn3 = BB();
	function<void(int, const string&)> fn4 = lb;
	function<void(CC&, int, const string&)> fun5 = &CC::show;
	fn1(1,"Name");
	fn2(1, "Name");
	fn3(1, "Name");
	fn4(1, "Name");
	CC cc;
	fun5(cc,1,"Name");
}

标签:const,string,show,包装,对象,int,message,cout
From: https://blog.csdn.net/WNX10086/article/details/140562028

相关文章

  • 模块1 课程准备 --- 第三章:建立面向对象的编程思想
    第三章建立面向对象的编程思想主要知识点:1、理解面向对象编程的基本思想。2、掌握面向对象编程的一般方法。3、能够运用Java语言编写简单的应用程序。学习目标:掌握面向对象编程的基本思想解释:面向过程编程从解决每一个步骤入手,适合于解决比较小的简......
  • 【C++】类和对象(中篇)
    类和对象一.类的默认成员函数二.构造函数三.析构函数四.拷贝构造函数五.运算符重载六.赋值运算符重载七.日期类的实现1.Date.h2.Date.cpp2.test.cpp八.取地址运算符重载1.const成员函数2.取地址运算符重载一.类的默认成员函数  默认成员函数就是用户不用实现的函......
  • 使用面向对象思想实现乐器弹奏
    题目乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。定义乐器类Instrument,包括方法make_sound()。定义乐器类的子类:二胡Erhu、钢琴Piano和小提琴Violin,定义一个函数可以弹奏各种乐器play(instrument),测试给乐手不同的乐器让他弹奏。代码c......
  • 导入创建对对象的意外引用,具体取决于模块是否是文件,或者是否是包的一部分
    我有一个微妙的导入问题,它创建的变量引用的对象与我期望的不同,这完全取决于我正在编写的模块是“按原样”导入还是作为包的一部分导入。假设我有一个定义Config类和设置它的函数的简单模块:classConfig:def__init__(self,**kwargs):ifkwargs.get......
  • 如何忽略或绕过导致 NoneType 不可迭代对象的实例
    我正在尝试解析Edgar数据库中10K的部分,当我运行以下代码时,#pipinstalledgartoolsimportpandasaspdfromedgarimport*#TelltheSECwhoyouareset_identity("[email protected]")filings2=get_filings(form='10-K',amendments=False,......
  • 【Java面向对象】异常处理
    文章目录1.异常1.1异常类1.2异常类型1.3免检异常和必检异常2.异常的声明、抛出与捕获2.1声明异常2.2抛出与捕获异常2.3从异常中获取信息3.链式异常3.1重新抛出异常3.2链式异常4.创建自定义异常类1.异常1.1异常类异常是对象,而对象都采用类来定义。异常的......
  • C++面向对象三大特性:继承
     前言:众所周知,C++作为一个面向对象的编程语言,有着三大特性:封装,继承,和多态。在前面的C++学习中,我们大部分所接触的只有封装,现在,就让我们来认识一下继承吧。一、继承的概念继承是指一个类(子类)从另一个类(父类)获得属性和行为的过程,它是使得代码得到复用的重要手段,允许程序员......
  • cimport 包装 C 库的 cython 模块
    我有这种C/cython项目:project/├──src/│└──modules/│├──cython1.pyx│├──cython1.pxd│├──cython2.pyx│├──cython2.pxd│├──includes/││├──c1.h││├──c1.c│......
  • Java面向对象程序三大特性:封装、继承、多态
    目录 引言一.封装二.继承三.多态四.结论 引言 在现代软件开发中,面向对象编程(OOP)已成为一种流行且有效的编程范式,其中Java语言以其高效性和灵活性深受开发者的喜爱。面向对象编程的核心在于其三大特性:封装、继承和多态。这些特性不仅提高了代码的重用性和可维......
  • 同时使用线程本地变量以及对象缓存的问题
    同时使用线程本地变量以及对象缓存的问题如有转载请著名出处:https://www.cnblogs.com/funnyzpc/p/18313879前面  前些时间看别人写的一段关于锁的(对象缓存+线程本地变量)的一段代码,这段代码大致描述了这么一个功能:外部传入一个key,需要根据这个key去全局变量里面找是否存在,如......