fun函数

学习kotlin系列之六(面向对象)

◇◆丶佛笑我妖孽 提交于 2019-12-09 16:20:42
1、访问器 kotlin字段是私有的 会生成get和set方法 当有需求只能内部设置名称 外部不能修改名称 方法就是:在该属性下增加private set 1)访问器 fun main ( args : Array < String > ) { val person = Person ( ) println ( person . age ) println ( person . name ) // person.name="hehe" //无法设置该属性 //报错 Cannot assign to 'name': the setter is private in 'Person } class Person { var name = "小明" private set var age = 20 } 2)自定义访问器 当有需求只能设置小于150的年龄 在该属性下增加 set()方法 fun main ( args : Array < String > ) { val person = Person ( ) person . age = 190 println ( person . age ) println ( person . name ) } class Person { var name = "张峰" var age = 20 set ( value ) { if ( value

kotlin中函数的定义和调用

点点圈 提交于 2019-12-08 14:02:07
1 、函数声明(前面内容官方有) Kotlin 中的函数使用 fun 关键字声明 fun double(x: Int): Int { return 2 * x } 函数参数使用 Pascal 表示法定义,即 name: type。参数用逗号隔开。每个参数必须有显式类型: fun powerOf(number: Int, exponent: Int) { …… } 函数参数可以有默认值,当省略相应的参数时使用默认值。与其他语言相比,这可以减少重载数量: fun read(b: Array<Byte>, off: Int = 0, len: Int = b.size) { …… } 覆盖方法总是使用与基类型方法相同的默认参数值。 当覆盖一个带有默认参数值的方法时,必须从签名中省略默认参数值: open class A { open fun foo(i: Int = 10) { …… } } class B : A() { override fun foo(i: Int) { …… } // 不能有默认值 } 如果一个函数不返回任何有用的值,它的返回类型是 Unit。Unit 是一种只有一个值——Unit 的类型。这个值不需要显式返回: fun printHello(name: String?): Unit { if (name != null) println("Hello $

虚函数实现原理

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

boost:bind使用指南

[亡魂溺海] 提交于 2019-12-07 00:52:28
bind - boost 头文件: boost/bind.hpp bind 是一组重载的函数模板. 用来向一个函数(或函数对象)绑定 某些参数. bind的返回值是一个函数对象. 它的源文件太长了. 看不下去. 这里只记下它的用法: 9.1 对于普通函数 假如有函数 fun() 如下: void fun(int x, int y) { cout << x << ", " << y << endl; } 现在我们看看怎么用 bind 向其绑定参数. 对于像 fun 这样的普通函数. 若fun 有n个参数. 则 bind 需要 n+1 个参数: 原始函数的地址 以及 n个要绑定的参数. 第 1种用法: 向原始函数 fun 绑定所有的参数 boost::bind(&fun, 3, 4) // bind的实参表依次为: 要绑定的函数的地址, 绑定到fun的第一个参数值, 第二个参数值... // fun有多少个参数, 这里就要提供多少个. 表示将 3 和 4 作为参数绑定到 fun 函数. 因为绑定了所有的参数. 现在我们调用bind所返回的函数对象: boost::bind(&fun, 3, 4)( ); //无参数. 就 会输出 3, 4 第 2种用法: 向原始函数 fun 绑定一部分参数 boost::bind(&fun, 3, _1) // bind的实参表依次还是:

实验四

…衆ロ難τιáo~ 提交于 2019-12-06 14:09:32
//寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。 // 例如,输入6和21,则输出为:7 11 13 17 19。 #include <stdio.h> #include <stdlib.h> #define N 1000 int fun(int n,int m,int bb[N]) { int i,j,k=0,flag; for(j=n;j<=m;j++) { flag=1; for(i=2;i<j;i++) if(j%i==0) { flag=0; break; } if(flag==1) bb[k++]=j; } return k; } int main(){ int n=0,m=0,i,k,bb[N]; scanf("%d",&n); scanf("%d",&m); for(i=0;i<m-n;i++) bb[i]=0; k=fun(n,m,bb); //数组名本身就是数组的首地址// for(i=0;i<k;i++) printf("%4d",bb[i]); system("pause"); return 0;} #include<stdio.h> #include<stdlib.h> #define N 100 void fun(int x[N][N],int n) { int i,j; for(i=1;i<=n;i++)

实验四

心不动则不痛 提交于 2019-12-06 11:16:50
实验结论 Part1: 验证性内容 这部分自行运行程序,并理解体会函数的定义、声明、调用方法。无需写在实验博客中。 其中,对于验证性内容2,如基于拓展思考部分做了编程实践尝试,可以将这部分分享写进实验博客。 Part2:附上补足后的程序源码以及运行测试结果截图 blank1.cpp //寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。 // 例如,输入6和21,则输出为:7 11 13 17 19。 #include <stdio.h> #include <stdlib.h> #define N 1000 int fun(int n,int m,int bb[N]) { int i,j,k=0,flag; for(j=n;j<=m;j++) { flag=1; // flag在C语言中没有特定的含义,但是我们一般将它作为标记使用。比如设立判断条件,或者作为跳出循环的依据。 for(i=2;i<j;i++) if(j%i==0) { flag=0; break; } if(flag!=0) bb[k++]=j; } return k; } int main(){ int n=0,m=0,i,k,bb[N]; //n,m为首位和末尾数,j为n,m间数字,k为素数个数 scanf("%d",&n); scanf("%d",&m); for(i=0

实验4

别来无恙 提交于 2019-12-06 09:42:11
1 //寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。 // 例如,输入6和21,则输出为:7 11 13 17 19。 #include <stdio.h> #include <stdlib.h> #define N 1000 int fun(int n,int m,int bb[N]) { int i,j,k=0,flag; for(j=n;j<=m;j++) { flag=1 ; for(i=2;i<j;i++) if(j%i==0) { flag=0; break; } if(flag) bb[k++]=j; } return k; } int main(){ int n=0,m=0,i,k,bb[N]; scanf("%d",&n); scanf("%d",&m); for(i=0;i<m-n;i++) bb[i]=0; k=fun(n,m,bb); for(i=0;i<k;i++) printf("%4d",bb[i]); system("pause"); return 0; } 2 #include<stdio.h> #include<stdlib.h> #define N 100 void fun(int x[N][N],int n) { int i,j; for(i=1;i<=n;i++) for(j=1;j<=n;j+

实验四

て烟熏妆下的殇ゞ 提交于 2019-12-06 09:40:25
//寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。 // 例如,输入6和21,则输出为:7 11 13 17 19。 #include <stdio.h> #include <stdlib.h> #define N 1000 int fun(int n,int m,int bb[N]) { int i,j,k=0,flag; for(j=n;j<=m;j++) { flag=2; for(i=2;i<j;i++) if(j%i==0) { flag=0; break; } if(flag==2) bb[k++]=j; } return k; } int main(){ int n=0,m=0,i,k,bb[N]; scanf("%d",&n); scanf("%d",&m); for(i=0;i<m-n;i++) bb[i]=0; k=fun(n,m,bb); for(i=0;i<k;i++) printf("%4d",bb[i]); system("pause"); return 0; } #include<stdio.h> #include<stdlib.h> #define N 100 void fun(int x[N][N],int n) { int i,j; for(i=1;i<=n;i++) for(j=1;j<=n;j++)

实验四

你。 提交于 2019-12-06 09:21:49
//寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。 // 例如,输入6和21,则输出为:7 11 13 17 19。 #include <stdio.h> #include <stdlib.h> #define N 1000 int fun(int n,int m,int bb[N]) { int i,j,k=0,flag; for(j=n;j<=m;j++) { flag=1; for(i=2;i<j;i++) if(j%i==0) { flag=0; break; } if(flag==1) bb[k++]=j; } return k; } int main(){ int n=0,m=0,i,k,bb[N]; scanf("%d",&n); scanf("%d",&m); for(i=0;i<m-n;i++) bb[i]=0; k=fun(n,m,bb); for(i=0;i<k;i++) printf("%4d",bb[i]); system("pause"); return 0; } 做这个程序时其他的都没有检查到什么问题,但是如第一张运算结果,按道理1应该不是素数,这里却加进去了,我找不到原因,也看到有同学的代码和我的差不多 在此提出疑问,请看到的同学,要是知道的话,向您请教 2. #include<stdio.h>

函数练习题17

人盡茶涼 提交于 2019-12-06 08:42:26
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h>//函数练习题 #include<stdlib.h> int a = 5; void fun(int b){ static int a = 10; a += b++; printf("%d\n", a); } void main(){ int c = 20; fun(c); a += ++c; printf("%d\n", a); system("pause"); return 0; } void fun(char *c, int d){ *c = *c + 1; d = d + 1; printf("%c,%c\n", *c, d); } void main(){ char a = 'A', b = 'a'; fun(&b, a); printf("%c,%c\n", a, b); system("pause"); return 0; } char fun(char x, char y){ if (x < y) return x; else return y; } void main(){ int a = '9'; int b = '8'; int c = '7'; printf("%c\n", fun(fun(a, b), fun(b, c))); system("pause");