函数声明

友元函数及友元类详解

一个人想着一个人 提交于 2020-02-03 10:58:18
在 C++ 中,一个类中可以有 public、protected、private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员。现在,我们来介绍一种例外情况——友元(friend)。借助友元(friend),可以使得其他类中的成员函数以及全局范围内的函数访问当前类的 private 成员。 友元函数 在当前类以外定义的、不属于当前类的函数也可以在类中声明,但要在前面加 friend 关键字,这样就构成了友元函数。 友元函数可以是不属于任何类的非成员函数,也可以是其他类的成员函数,友元函数可以访问当前类中的所有成员,包括 public、protected、private 属性的。 。 1) 将非成员函数声明为友元函数 # include <iostream> using namespace std ; class Student { public : Student ( char * name , int age , float score ) ; public : friend void show ( Student * pstu ) ; //将show()声明为友元函数 private : char * m_name ; int m_age ; float m_score ; } ; Student : :

【GO学习笔记】数组

心已入冬 提交于 2020-02-02 21:47:52
文章目录 数组定义 数组的初始化 方法一 方法二 方法三 方法四 使用数组 访问数组元素 访问指针数组的元素 把同样类型的一个数组赋值给另外一个数组 编译器会阻止类型不同的数组互相赋值 把一个指针数组赋值给另一个 在函数间传递数组 使用值传递,在函数间传递大数组 使用指针在函数间传递大数组 数组是值类型 数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 数组定义 var 数组变量名 [ 元素数量 ] T 数组的初始化 数组的初始化也有很多方式。 方法一 声明一个数组,并设置为零值 var array [ 5 ] int 每个元素都初始化为0,也就是整型的零值。 方法二 使用数组字面量声明数组 // 声明一个包含5 个元素的整型数组 // 用具体值初始化每个元素 array := [ 5 ] int { 10 , 20 , 30 , 40 , 50 } 方法三 让Go 自动计算声明数组的长度,如果使用 ... 替代数组的长度。 // 声明一个整型数组 // 用具体值初始化每个元素 // 容量由初始化值的数量决定 array := [ ... ] int { 10 , 20 , 30 , 40 , 50 } 方法四 声明数组并指定特定元素的值 // 声明一个有5 个元素的数组 // 用具体值初始化索引为1 和2 的元素

Php 基本语法

拟墨画扇 提交于 2020-02-02 03:46:59
php基本语法 1. 四种不同的开始结束标记 只有<?php ?>、<script language="php"></script>两个总是可用,剩下的<? ?>、<% %>需要在php.ini中配置。即分别开启php.ini中的short-open-tag和asp-tags即可,默认情况下,它们被禁用,而且移植性较差,不推荐使用。 2. 指令分隔符“分号” 末尾的php代码段后面的“;”也可以不要,当使用输出缓冲和include()或者require()省略会更好。 3. 注释 书写恰当的注释是一种良好的习惯。php注释包括多行注释“/* */”,单行注释“//”与“#”,多行注释之内不能嵌套另一个多行注释,其他情况随意搭配都可。 4. 空行 空行可以展示代码层次的美感。比如一个源文件的两个代码片段使用两个空行,两个类的声明之间也是用两个空行。比如,两个函数声明之间用一个空行,函数内局部变量与第一条语句之间用一个空行,块注释或单行注释之前还有一个函数内的两个逻辑代码段之间都是用一个空行。运用空格的情况有,参数列表的逗号后面空格,运算符与操作数之间,for语句表达式逗号后面等。 5.变量 php最基本的存储单元是变量和常量,可以存储不同类型的数据。由于它是弱类型语言,变量的数据类型由上下文或者运行时决定。 5.1 变量声明 “$”后跟变量名,并用“=”赋值,当第一次给一个变量赋值

前端之JavaScript

僤鯓⒐⒋嵵緔 提交于 2020-02-02 02:03:28
1 | 0 JavaScript概述 1 | 1 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。 该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标,JavaScript本身已被Netscape注册为商标。而是想体现这门语言的制定者是ECMA,而不是Netscape,这样有利于保证这门语言的开发性和中立性。 因此ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。 1 | 2 ECMAScript的历史 年份 名称 描述 1997 ECMAScript 1 第一个版本 1998 ECMAScript 2 版本变更 1999 ECMAScript 3 添加正则表达式 添加try/catch ECMAScript 4 没有发布 2009 ECMAScript 5 添加"strict mode"严格模式 添加JSON支持 2011 ECMAScript 5.1 版本变更

每天刷Web面试题(前10天汇总)

时间秒杀一切 提交于 2020-02-01 02:46:24
一、算法题部分 1. 如何获取浏览器URL中查询字符串中的参数? function getParamsWithUrl(url) { var args = url.split('?'); if (args[0] === url) { return ""; } var arr = args[1].split('&'); var obj = {}; for ( var i = 0; i < arr.length; i++) { var arg = arr[i].split('='); obj[arg[0]] = arg[1]; } return obj; } var href = getParamsWithUrl('http://www.itlike.com?id=1022&name=撩课&age=1'); console.log(href['name']); // 撩课 2. 写一个深度克隆方法(es5)? /** * 深拷贝 * @param {object}fromObj 拷贝的对象 * @param {object}toObj 目标对象 */function deepCopyObj2NewObj(fromObj, toObj) { for(var key in fromObj){ // 1. 取出键值对 var fromValue = fromObj[key]; // 2.

【javascript】Javascript闭包

限于喜欢 提交于 2020-02-01 01:58:33
  在描述闭包的实现与用途前,需要了解以下一些知识点。   执行上下文(执行上下文环境)   1 console.log(a); //Uncaught ReferenceError: a is not defined 2 3 console.log(b); //undefined 4 var b; 5 6 console.log(c); //undefined 7 var c = 10;   看上面一个例子,当直接在控制台输出a时,提示a未定义,这个很容易就理解了。不过在"var b"和"var c = 10"执行前输出b和c的值时,得到的结果却是undefined。因为代码是一条一条执行的,在执行console.log()之前,"var b"和"var c = 10"必定是还未执行的。而结果却与a的输出结果不同,这是怎么一回事?  第二种情况: 1 console.log( this ); 输出: 第三种情况: 1 console.log(f1);   2 function f1(){};  //函数声明 3 4 console.log(f2); 5 var f2 = function (){};  //函数表达式 输出:    从这里可以看出来,在一段js代码拿过来真正一句一句运行之前,浏览器做了一些“准备工作”,其中就包括对变量的声明,而不是赋值

类的概念及品种(ing)

对着背影说爱祢 提交于 2020-01-31 17:38:28
虚函数: 在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数。 纯虚函数: 在声明虚函数时被“初始化”为0的函数。 抽象类 :至少包含一个纯虚函数的类。 虚析构函数 :释放派生类的对象。 C++规定,当一个成员函数被声明为虚函数之后,其派生类中的同名函数都自动成为虚函数。记住 来源: CSDN 作者: 泰乐熊 链接: https://blog.csdn.net/xiong3110/article/details/87428461

C语言学习的第一天

孤街浪徒 提交于 2020-01-30 22:55:19
C语言的应用 操作系统 语言编译器 汇编器 文本编辑器 打印机 网络驱动器 现代程序 数据库 语言解释器 实体工具 C语言的环境设置 文本编辑器 notepad或者vim vi都是可以的 C语言编译器 Windows 上的安装 为了在 Windows 上安装 GCC,您需要安装 MinGW。为了安装 MinGW,请访问 MinGW 的主页 www.mingw.org,进入 MinGW 下载页面,下载最新版本的 MinGW 安装程序,命名格式为 MinGW-.exe。 当安装 MinWG 时,您至少要安装 gcc-core、gcc-g++、binutils 和 MinGW runtime,但是一般情况下都会安装更多其他的项。 添加您安装的 MinGW 的 bin 子目录到您的 PATH 环境变量中,这样您就可以在命令行中通过简单的名称来指定这些工具。 当完成安装时,您可以从 Windows 命令行上运行 gcc、g++、ar、ranlib、dlltool 和其他一些 GNU 工具。 C程序结构 C语言主要包括以下几个部分 1.预处理器指令 2.函数 3.变量 4.语句&表达式 5.注释 Hello Word实例 # include <stdio.h> /*预处理器指令*/ int main ( ) { /*主函数*/ printf ( "hello,word.\n" ) ; /*语句

【原】AFNetworking源码阅读(三)

爱⌒轻易说出口 提交于 2020-01-30 09:55:22
【原】AFNetworking源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇 的话,主要是讲了如何通过构建一个request来生成一个data task。但是对于NSURLSession部分却没有提及。主要是精力有限,准备在这一部分把NSURLSession的知识好好梳理一遍。一切先从上一篇中的addDelegateForDataTask:函数说起,然后再介绍AFURLSessionManagerTaskDelegate,最后结合AFURLSessionManager中的NSURLSession梳理一遍(可能会将部分内容放到下一篇)。 2. 由addDelegateForDataTask引发 注意addDelegateForDataTask:这个函数并不是AFURLSessionManagerTaskDelegate的函数,而是AFURLSessionManager的一个函数。这也侧面说明了 AFURLSessionManagerTaskDelegate和NSURLSessionTask的关系是由 AFURLSessionManager管理的 。 该函数除了对于AFURLSessionManagerTaskDelegate类型的成员变量delegate设置之外,最关键的代码就是 [self setDelegate:delegate

Python中__init__的用法和理解

白昼怎懂夜的黑 提交于 2020-01-30 04:11:47
在Python中定义类经常会用到__init__函数(方法), 首先需要理解的是, 两个下划线开头的函数是声明该属性为私有,不能在类的外部被使用或访问。 而__init__函数(方法)支持带参数类的初始化,也可为声明该类的属性(类中的变量)。 __init__函数(方法)的第一个参数必须为self,后续参数为自己定义。 来源: CSDN 作者: 往事如yan 链接: https://blog.csdn.net/txpp520/article/details/104062936