-
C++ STL的发展历程是啥样的
所属栏目:[语言] 日期:2022-07-14 热度:122
Alexander Stepanov(后被誉为 STL 标准模板库之父,后简称 Stepanov),1950 年出生与前苏联的莫斯科,他曾在莫斯科大学研究数学,此后一直致力于计算机语言和泛型库研究。 在 20 世纪 70 年代,Stepanov 开始考虑,在保证效率的前提下,是否能将算法从诸[详细]
-
C++ STL是什么 有啥用
所属栏目:[语言] 日期:2022-07-14 热度:187
在已有 C++ 尤其是 C++ 模板的基础上,从本节开始,我们开始系统地学习 STL 标准模板库,首先来了解什么是 STL,以及学习 STL 有什么用? STL,英文全称 standard template library,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,是[详细]
-
Java反射机制是什么
所属栏目:[语言] 日期:2022-07-14 热度:182
Java 反射机制是 Java 语言的一个重要特性。在学习 Java 反射机制前,大家应该先了解两个概念,编译期和运行期。 编译期是指把源码交给编译器编译成计算机可以执行的文件的过程。在 Java 中也就是把 Java 代码编成 class 文件的过程。编译期只是做了一些翻[详细]
-
Java反射机制API
所属栏目:[语言] 日期:2022-07-14 热度:194
实现 Java 反射机制的类都位于 java.lang.reflect 包中,java.lang.Class 类是 Java 反射机制 API 中的核心类。本节将从这两个方面讲解 Java 反射机制 API。 可参考《Java反射机制的基本概念》一节中介绍的关于 Java 反射机制获取类对象相关信息的方法,来[详细]
-
Java通过反射访问构造方法
所属栏目:[语言] 日期:2022-07-14 热度:131
为了能够动态获取对象构造方法的信息,首先需要通过下列方法之一创建一个 Constructor 类型的对象或者数组。 getConstructors() getConstructor(Class?parameterTypes) getDeclaredConstructors() getDeclaredConstructor(Class?...parameterTypes) 如果是[详细]
-
Java通过反射执行方法
所属栏目:[语言] 日期:2022-07-14 热度:200
要动态获取一个对象方法的信息,首先需要通过下列方法之一创建一个 Method 类型的对象或者数组。 getMethods() getMethods(String name,Class? parameterTypes) getDeclaredMethods() getDeclaredMethods(String name,Class?...parameterTypes) 如果是访问[详细]
-
Java通过反射访问成员变量
所属栏目:[语言] 日期:2022-07-14 热度:123
通过下列任意一个方法访问成员变量时将返回 Field 类型的对象或数组。 getFields() getField(String name) getDeclaredFields() getDeclaredField(String name) 上述方法返回的 Field 对象代表一个成员变量。例如,要访问一个名称为 price 的成员变量,示[详细]
-
Java在远程方法调用中运用反射机制
所属栏目:[语言] 日期:2022-07-14 热度:88
上一节详细介绍了如何使用 java.lang.reflect 包提供的 Constructor 类获取构造方法的信息、使用 Method 类获取成员方法的信息以及使用 Field 类获取成员变量的信息。 本案例将介绍反射机制在网络编程中的应用,实现如何在客户端通过远程方法调用服务器端[详细]
-
Java流是什么 输入 输出流又是什么
所属栏目:[语言] 日期:2022-07-14 热度:154
在 Java 中所有数据都是使用流读写的。流是一组有序的数据序列,将数据从一个地方带到另一个地方。根据数据流向的不同,可以分为输入(Input)流和输出(Output)流两种。 在学习输入和输出流之前,我们要明白为什么应用程序需要输入和输出流。例如,我们[详细]
-
Java系统流
所属栏目:[语言] 日期:2022-07-14 热度:67
每个 Java 程序运行时都带有一个系统流,系统流对应的类为 java.lang.System。Sytem 类封装了 Java 程序运行时的 3 个系统流,分别通过 in、out 和 err 变量来引用。这 3 个系统流如下所示: System.in:标准输入流,默认设备是键盘。 System.out:标准输[详细]
-
Java字符编码介绍
所属栏目:[语言] 日期:2022-07-14 热度:66
计算机中,任何的文字都是以指定的编码方式存在的,在 Java 程序的开发中最常见的是 ISO8859-1、GBK/GB2312、Unicode、 UTF 编码。 Java 中常见编码说明如下: ISO8859-1:属于单字节编码,最多只能表示 0~255 的字符范围。 GBK/GB2312:中文的国标编码,[详细]
-
Java File类 文件操作类 详解
所属栏目:[语言] 日期:2022-07-14 热度:131
在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象,也就是说,如果希望在程序中操作文件和目录,则都可以通过 File 类来完成。File 类定义了一些方法来操作文件,如新建、删除、重命名文件和目录等。 File 类不能访问文件内容本身,如果需要[详细]
-
C++ 11是什么 C++ 11标准的原由
所属栏目:[语言] 日期:2022-07-13 热度:79
C++ 这门编程语言的历史可以追溯至 1979 年,当时的 Bjarne Stroustrup(C++ 之父,后续简称 Stroustrup)还在使用 Simula 语言进行开发工作。 Simula 语言被认为是第一个面向对象的编程语言。Stroustrup 也非常赞赏 Simula 语言的这种特性,但由于实例开[详细]
-
C++ auto类型推导完全策略
所属栏目:[语言] 日期:2022-07-13 热度:58
在 C++11 之前的版本(C++98 和 C++ 03)中,定义变量或者声明变量之前都必须指明它的类型,比如 int、char 等;但是在一些比较灵活的语言中,比如 C#、JavaScript、PHP、Python 等,程序员在定义变量时可以不指明具体的类型,而是让编译器(或者解释器)[详细]
-
C++ decltype类型推导完全战略
所属栏目:[语言] 日期:2022-07-13 热度:113
decltype 是 C++11 新增的一个关键字,它和 auto 的功能一样,都用来在编译时期进行自动类型推导。不了解 auto 用法的读者请转到《C++ auto》。 decltype 是declare type的缩写,译为声明类型。 既然已经有了 auto 关键字,为什么还需要 decltype 关键字呢[详细]
-
C++返回值类型后置 跟踪返回值类别
所属栏目:[语言] 日期:2022-07-13 热度:135
在泛型编程中,可能需要通过参数的运算来得到返回值的类型。考虑下面这个场景: template typename R, typename T, typename U R add(T t, U u) { return t+u; } int a = 1; float b = 2.0; auto c = adddecltype(a + b)(a, b); 我们并不关心 a+b 的类型是[详细]
-
C++11运用using定义别名 替代typedef
所属栏目:[语言] 日期:2022-07-13 热度:119
大家都知道,在 C++ 中可以通过 typedef 重定义一个类型: typedef unsigned int uint_t; 被重定义的类型并不是一个新的类型,仅仅只是原有的类型取了一个新的名字。因此,下面这样将不是合法的函数重载: void func(unsigned int); void func(uint_t); //[详细]
-
链接库是啥 动态链接库和静态链接库
所属栏目:[语言] 日期:2022-07-13 热度:118
静态链接库和动态链接库是最常用的两种共享代码的方法,从本节开始,您将系统地了解它们,并彻底搞清楚以下问题: 什么是库,什么是链接库,以及静态链接库和动态链接库的区别; 如何手动创建一个静态或者动态链接库; 如何在自己的项目中使用第三方提供的[详细]
-
首个多线程程序
所属栏目:[语言] 日期:2022-07-13 热度:99
通过阅读《什么是线程》一节,我们了解了什么是线程以及什么是多线程。本节,我们教大家编写第一个多线程程序。 大多数操作系统都支持同时执行多个程序,包括常见的 Windows、Linux、Mac OS X 操作系统等。为了避免多个程序访问系统资源(包括文件资源、I/[详细]
-
Makefile控制函数error与warning
所属栏目:[语言] 日期:2022-07-13 热度:178
Makefile 中提供了两个控制 make 运行方式的函数。其作用是当 make 执行过程中检测到某些错误时为用户提供消息,并且可以控制 make 执行过程是否继续。这两个函数是 error 和 warning,我们来详细的介绍一下这两个函数。 $(error TEXT...) 函数说明如下:[详细]
-
Makefile中寻常的错误信息
所属栏目:[语言] 日期:2022-07-13 热度:180
make 执行过程中所产生错误并不都是致命的,特别是在命令行之前存在 -、或者 make 使用 -k 选项执行时。make 执行过程的致命错误都带有前缀字符串 ***。错误信息都有前缀,一种是执行程序名作为错误前缀(通常是 make);另外一种是当 Makefile 本身存在语[详细]
-
C++11支撑函数模板的默认模板参数
所属栏目:[语言] 日期:2022-07-13 热度:85
在 C++98/03 标准中,类模板可以有默认的模板参数,如下: template typename T, typename U = int, U N = 0 struct Foo { // ... }; 但是却不支持函数的默认模板参数: template typename T = int // error in C++98/03: default template arguments void[详细]
-
C++11 tuple元组细说
所属栏目:[语言] 日期:2022-07-13 热度:57
C++11 标准新引入了一种类模板,命名为 tuple(中文可直译为元组)。tuple 最大的特点是:实例化的对象可以存储任意数量、任意类型的数据。 tuple 的应用场景很广泛,例如当需要存储多个不同类型的元素时,可以使用 tuple;当函数需要返回多个数据时,可以[详细]
-
C++11列表初始化 统一了初始化方法
所属栏目:[语言] 日期:2022-07-13 热度:52
我们知道,在 C++98/03 中的对象初始化方法有很多种,请看下面的代码: //初始化列表 int i_arr[3] = { 1, 2, 3 }; //普通数组 struct A { int x; struct B { int i; int j; } b; } a = { 1, { 2, 3 } }; //POD类型 //拷贝初始化(copy-initialization) i[详细]
-
C++11 lambda匿名函数用法解说
所属栏目:[语言] 日期:2022-07-13 热度:51
lambda 源自希腊字母表中第 11 位的 ,在计算机科学领域,它则是被用来表示一种匿名函数。所谓匿名函数,简单地理解就是没有名称的函数,又常被称为 lambda 函数或者 lambda 表达式。 继 Python、Java、C#、PHP 等众多高级编程语言都支持 lambda 匿名函数[详细]
