关于编译与内存的关系,以及执行时内存的划分 1、所谓在编译期间分配空间指的是静态分配空间(相对于用new动态申请空间),如全局变量或静态变量(包括一些复杂类型的 常量),它们所需要的空间大小可以明确计算出来,并且不会再改变,因此它们可以直接存放在可执行文件的特定的节里(而且 包含初始化的值),程序运 ...
我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等。 在多数情况下可以混用。二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而 static readonly是在运行时计算出其值的,所以还可以通 ...
分类:
其他好文 时间:
2017-02-19 18:35:31
阅读次数:
186
摘要: 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码。 使用方式: 1.将方法或变量标记为implicit 2.将方法的参数列表标记为implicit 3.将类标记为impli ...
分类:
其他好文 时间:
2017-02-10 20:48:49
阅读次数:
328
C++0x中引入了static_assert这个关键字,用来做编译期间的断言,因此叫做静态断言。 其语法:static_assert(常量表达式,提示字符串)。 如果第一个参数常量表达式的值为false,会产生一条编译错误,错误位置就是该static_assert语句所在行,第二个参数就是错误提示字 ...
分类:
编程语言 时间:
2017-02-06 12:39:35
阅读次数:
156
背景:今天偶然机会了解了到lombok插件,开发时无需写get set,注解编译期间自动加上,无疑是快速开发者的福音。但新玩意毕竟需要了解,也会走些弯路。在安装的时候window下可以,mac下安装后无法启动。最后在官网找到了答案,再此作个备忘。 1、官网:https://projectlombok ...
分类:
系统相关 时间:
2017-02-04 01:07:06
阅读次数:
430
在C++中,存在类型转换,通常意味着存在缺陷(并非绝对)。所以,对于类型转换,有如下几个原则:(1)尽量避免类型转换,包括隐式的类型转换(2)如果需要类型转换,尽量使用显式的类型转换,在编译期间转换(3)避免使用reinterpret_cast和老式的强制类型转换操作符通常,隐式的类型转换会导致警告 ...
分类:
编程语言 时间:
2017-01-30 18:42:30
阅读次数:
294
C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。 关于#和## 在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后 ...
分类:
编程语言 时间:
2017-01-27 00:14:48
阅读次数:
281
总结动态绑定(多态):动态绑定是指在“执行期间”(而非编译期间)判断所引用的实际对象类型,根据其实际的类型调用其相应的方法。所以实际当中找要调用的方法时是动态的去找的,new的是谁就找谁的方法,这就叫动态绑定。动态绑定帮助我们的程序的可扩展性达到了极致。 多态的存在有三个必要的条件: 解析: 其中S ...
分类:
其他好文 时间:
2017-01-25 17:43:24
阅读次数:
185
const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。 而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。 static readonly MyClass myins = new MyClass();(对) static readonly ...
分类:
其他好文 时间:
2017-01-22 09:44:31
阅读次数:
148
1、普通函数 2、友元函数 3、内联函数(编译期间展开,虚函数是在运行期间绑定) 4、构造函数 5、静态成员函数(只有一份大家共享) ...
分类:
其他好文 时间:
2017-01-14 14:56:52
阅读次数:
186