fun函数

C++11 外部模板

隐身守侯 提交于 2020-01-24 03:00:54
【1】引入外部模板为了解决什么问题? “外部模板”是C++11中一个关于模板性能上的改进。实际上,“外部”(extern)这个概念早在C的时候已经就有了。 常见的情况,在一个文件a.c中定义了一个变量int i,而在另外一个文件b.c中想使用它,这个时候就会在没有定义变量i的b.c文件中做一个外部变量的声明。比如: // 声明在b.c文件中 extern int i; 这样做的好处是,在分别编译了a.c和b.c之后,其生成的目标文件a.o和b.o中只有i这个符号(可简单理解为变量)的一份定义。 具体地,a.o中的i是实在存在于a.o目标文件的数据区中的数据,而在b.o中,只是记录了i符号会引用其他目标文件中数据区中的名为i的数据。 这样一来,在链接器(通常由编译器代为调用)将a.o和b.o链接成单个可执行文件(或者库文件)c的时候,c文件的数据区也只会有一个i的数据(供a.c和b.c的代码共享)。 而如果b.c中我们声明int i的时候不加上extern的话,那么i就会实实在在地既存在于a.o的数据区中,也存在于b.o的数据区中。 那么链接器在链接a.o和b.o的时候,就会报告错误,因为无法决定相同的符号是否需要合并。 而对于函数模板来说,现在我们遇到的几乎是一模一样的问题。 不同的是,发生问题的不是变量(数据),而是函数(代码)。这样的困境是由于模板的实例化带来的。

虚函数

删除回忆录丶 提交于 2020-01-23 23:02:05
/* 虚函数 */ /*********************************************************************** 虚函数建立在继承情况下的 虚函数 : 一个成员函数 ( 不包括构造函数和静态成员函数 ) 前面有 virtual 关键字 虚函数好处 : 可以用一致的 ( 相同的 ) 方法,在不同种情况,完成不一样的实现 用同样的接口,完成不同的实现 虚函数写法 : 1. 在基类和派生类中,有同名的函数,参数一样 , 返回值一样。那么在基类中 此函数前加上 virtual 关键字 , 派生类 (virtual) 可加可不加 2. 调用,必须使用基类的指针或则引用完成调用 如何判断函数去哪里 ? pb->Fun(); 基类的指针调用函数 FUN 1 如果 FUN 是非虚成员函数 , 那么执行 基类 ::FUN() 2 如果 FUN 是虚函数 a. 如果基类指针指向的是基类对象,执行基类 ::FUN() b. 如果基类指针指向的是派生类对象,执行派生类 ::FUN() ***********************************************************************/ #include "stdafx.h" #include <iostream.h> class A { public :

Kotlin学习系列——对象表达式和对象声明

喜夏-厌秋 提交于 2020-01-23 04:27:35
Kotlin 用对象表达式和对象声明来实现创建一个对某个类做了轻微改动的类的对象,且不需要去声明一个新的子类。 对象表达式 通过对象表达式实现一个匿名内部类的对象用于方法的参数中: window . addMouseListener ( object : MouseAdapter ( ) { override fun mouseClicked ( e : MouseEvent ) { // ... } override fun mouseEntered ( e : MouseEvent ) { // ... } } ) 对象可以继承于某个基类,或者实现其他接口: open class A ( x : Int ) { public open val y : Int = x } interface B { …… } val ab : A = object : A ( 1 ) , B { override val y = 15 } 如果超类型有一个构造函数,则必须传递参数给它。多个超类型和接口可以用逗号分隔。 通过对象表达式可以越过类的定义直接得到一个对象: fun main ( args : Array < String > ) { val site = object { var name : String = "菜鸟教程" var url : String = "www.runoob

os.walk与os.path.walk

北慕城南 提交于 2020-01-22 01:12:46
学习的过程中遇到了os模块的walk函数,经过help查询帮助后大致明白了什么意思: os.walk(top,topdown=True,onerror=None) 需要三个参数,其中top是必须给出的路径变量,后两个可以不给,但是系统默认的有值,就是上面写的那种。 它的返回值是元组的形式,包括每次遍历的路径名,文件夹名,文件名(其中文件路径是字符串形式的,文件夹是列表,文件名也是列表):下面是我的python文件夹里面的内容,其中有20120627和class两个文件夹,可以看到结果中三个元组,第一个是所给的路径下面的文件,第二个是20120627这个文件夹下的文件(如果它下面还有文件夹就会继续遍历),第三个是class的文件夹的文件: [root@fsailing1 python]# ls 172713.zip expression.py helloworld.py test.py 20120627 for.py if.py using_dict.py 20120627165311.zip function1.py mymodul_demo1.py using_list.py backup_ver1.py fun_default.py mymodul_demo.py using_sys.py backup_ver2.py fun_doc.py mymodul.py using

Kotlin基本语法

梦想与她 提交于 2020-01-21 05:32:09
参考: https://www.kotlincn.net/docs/reference/basic-syntax.html 程序入口点 Kotlin 应用程序的入口点是 main 函数。 fun main ( ) { println ( "Hello world!" ) } 函数 带有两个 Int 参数、返回 Int 的函数: fun main ( ) { println ( sum ( 1 , 2 ) ) ; } fun sum ( a : Int , b : Int ) : Int { return a + b } 将表达式作为函数体、返回值类型自动推断的函数: fun sum ( a : Int , b : Int ) = a + b 函数返回无意义的值: fun printSum ( a : Int , b : Int ) : Unit { println ( "sum of $a and $b is ${ a + b } " ) } Unit 返回类型可以省略: fun printSum ( a : Int , b : Int ) { println ( "sum of $a and $b is ${ a + b } " ) } 参见 函数 。 变量 定义只读局部变量使用关键字 val 定义。只能为其赋值一次。 val a : Int = 1 // 立即赋值 val b

关于指针的几个模糊概念

不打扰是莪最后的温柔 提交于 2020-01-19 20:06:38
以上论述仅是个人夜半时分维之遨游,若有不正,请大家批评指正。 总结起来其实就简单的以下5点: ① 指针数组:int (*p)[] ②数组指针:int*p[] ③指针函数: int* fun(char , char) ④函数指针:int(*fun)(char,char) ⑤typedef int (*fun)(char,char): fun为指向某种特定函数类型的指针类型 来源: CSDN 作者: gujiamin-0-1 链接: https://blog.csdn.net/baidu_34263241/article/details/104042709

C++ 虚函数表解析

[亡魂溺海] 提交于 2020-01-18 11:39:48
转自: c++虚函数 大牛的文章,就是通俗易懂,言简意赅。 前言 C++ 中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术, RTTI 技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的 C++ 的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。 当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有图片,没有详细的说明,没有比较,没有举一反三。不利于学习和阅读,所以这是我想写下这篇文章的原因。也希望大家多给我提意见。 言归正传,让我们一起进入虚函数的世界。 虚函数表 对 C++ 了解的人都应该知道虚函数( Virtual Function )是通过一张虚函数表( Virtual Table )来实现的。简称为 V-Table 。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以

python的装饰器 --函数计算器

女生的网名这么多〃 提交于 2020-01-18 09:36:21
题目 装饰器实现一个函数计时器 1.被装饰的函数有返回值怎么办 2.如何保留被装饰函数的函数名和帮助信息文档 编程 import time import random import string import functools li = [ random . choice ( string . ascii_letters ) for i in range ( 100 ) ] def timeit ( func ) : @functools . wraps ( func ) def wrapper ( * args , * * kwargs ) : # 接收可变参数 和关键字参数 "" "这是一个装饰器timeit" "" # 在函数运行只前 start_time = time . time ( ) # 执行函数 res = func ( * args , * * kwargs ) # 在函数运行之后 end_time = time . time ( ) print ( '运行时间为:%.6f' % ( end_time - start_time ) ) return res return wrapper @timeit def con_add ( ) : s = '' for i in li : s + = ( i + ',' ) print ( s ) @timeit def

开发函数计算的正确姿势——使用交互模式安装依赖

烈酒焚心 提交于 2020-01-13 15:38:22
前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute) : 函数计算 是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考 。 Fun : Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考 。 备注: 本文介绍的技巧需要 Fun 版本大于等于 3.0.0-beta.1 。 依赖工具 本项目是在 MacOS 下开发的,涉及到的工具是平台无关的,对于 Linux 和 Windows 桌面系统应该也同样适用。在开始本例之前请确保如下工具已经正确的安装,更新到最新版本,并进行正确的配置。 Docker Fun Fun 和 Fcli 工具依赖于 docker 来模拟本地环境。 对于 MacOS 用户可以使用 homebrew 进行安装: Windows 和 Linux 用户安装请参考: https://github.com/aliyun/fun/blob/master/docs/usage/installation.md

定时器(Timer)

痞子三分冷 提交于 2020-01-11 00:36:46
定时器(Timer):用于在指定的秒数后调用函数。 使用Python定时器时需要注意如下4个方面: (1)定时器构造函数主要有2个参数,第一个参数为时间,第二个参数为函数名,第一个参数表示多长时间后调用后面第二个参数指明的函数。第二个参数传入函数名即可,不用带() (2)必须在定时器执行函数内部重复构造定时器,因为定时器构造后只执行1次,必须循环调用。 (3)定时器间隔单位是秒,可以是浮点数,如5.5,0.02等,在执行函数fun_timer内部和外部中给的值可以不同。 (4)可以使用cancel停止定时器的工作。 代码饭粒1: import threading def fun_timer(): print('Hello Timer!') global timer timer = threading.Timer(3, fun_timer) timer.start() timer = threading.Timer(1, fun_timer) timer.start() 代码饭粒2: # -*- coding: utf-8 -*- import threading import time def fun_timer(): print('Hello Timer!') global timer timer = threading.Timer(3, fun_timer) timer