当类中声明虚函数时,编译器会在类中生成一个虚函数表。
virtual成员函数会被编译器放入虚函数表中。
当存在虚函数时,每个对象中都有一个指向虚函数表的指针(C++编译器给父类对象、子类对象提前布局vptr指针;)最后通过demo证明了vptr指针的存在性...
分类:
编程语言 时间:
2015-06-17 09:46:14
阅读次数:
177
本文主要讨论class与struct的区别。为什么是区别而不是共同点呢?因为在绝大部分情况下,class和struct其实是可以互相替换的,
区别到底有哪些呢,我总结了一下大概有如下几点:
1、成员的默认访问权限不同。如果我们使用struct关键字,则定义在第一个访问说明符之前的成员是public的;相反,如果我们使用class关键字,则这些成员是private的。
class A
{...
分类:
编程语言 时间:
2015-06-17 09:43:57
阅读次数:
150
Java泛型代码例子一篇代码胜过千言万语package com.apkkids.javalanguage;import java.util.ArrayList;
import java.util.List;/**
* @author wxb
* Java泛型例子
*/
public class GenericTest {
//泛型接口
public interface MyCo...
分类:
编程语言 时间:
2015-06-17 09:44:00
阅读次数:
170
图形学复习CH7 光栅化是将形式表示的几何图元转换为阵列表示的数据片元的过程,片元中每一个像素对应帧缓冲区中的每一个像素...
分类:
编程语言 时间:
2015-06-17 09:41:35
阅读次数:
183
优先级队列,顾名思义,和传统“先进后出”的队列相比,优先级队列在元素加入时就根据该元素的优先级插入到相应位置。实际上优先级队列PriotyQueue在poll时还是遵循先进后出,只是数据在进入时已经根据优先级排序了。实现优先级队列需要实现一个Comparator,测试代码如下:
public class PriotyQueueTest { //比较器,用于判断两个元素的优先级
Co...
分类:
编程语言 时间:
2015-06-17 09:42:53
阅读次数:
123
类加载器是用于加载.class文件到虚拟机中,并生成java.lang.Class对象。类加载器结构jvm自带的类加载器有:
bootstrap加载器
引导加载器又名根加载器,是女娲级别的加载器,rt.jar里的类都是由它加载的,如java.lang.Object、java.lang.String、java.lang.Class、java.lang.ClassLoader等等。没有它连Java都...
分类:
编程语言 时间:
2015-06-17 09:41:10
阅读次数:
109
首先用HomeBrew安装一下Python的3.4版本。苹果自带的Python,开发的话还是算了吧。在终端里输入下面这行命令。brew install python3接下来打开Sublime,语法修改为Python。输入print ('Hello World')注意,Python3中,print函数需要加上括号了。对于经常使用C,Java的新手,可能不太习惯不用加分号。写完这行代码之后,打开终端,输...
分类:
编程语言 时间:
2015-06-17 09:38:38
阅读次数:
154
我们有时候也会遇到一些脱离spring容器创建的类实例,如何把spring容器内的对象注入到这些类实例内呢。
我们可以用org.springframework.beans.factory.config.AutowireCapableBeanFactory.createBean(Class beanClass, int
autowireMode, boolean depende...
分类:
编程语言 时间:
2015-06-17 09:40:24
阅读次数:
153
基本思路还是使用Floyd判圈算法。指针hare每次向后移动2个节点,指针tortoise每次向后移动1个节点。如果hare最终指向尾节点则该链表无回路。否则,该链表有回路。(详见《LeetCode #141 Linked List Cycle》)
现在我们已经知道了链表有没有回路,但是如何在不使用额外空间并且不修改原链表的基础上获得回路的起始节点呢?这需要一些数学推导:
设链表起始节点为H,回路起始节点为S,两指针第一次相遇节点为M。
设回路的长度为c,S到M的距离为c1,M到S的距离为c2。...
分类:
编程语言 时间:
2015-06-17 09:37:04
阅读次数:
249
Any:
Any是一个空协议集合的别名,它表示没有实现任何协议,因此它可以是任何类型,包括类实例与结构体实例。
Any是一个别名。
/// 一个任何类型都遵守的协议类型
typealias Any = protocol
AnyObject:
AnyObject是一个成员为空的协议,任何对象都实现了这个协议。
看一下AnyObject的定义:
@objc pr...
分类:
编程语言 时间:
2015-06-17 09:36:34
阅读次数:
150
String 类的两种实例化方式
A.直接赋值
public class Stringlei
{
public static void main(String args[]){
String name="张三";
System.out.println("姓名:"+name);
}
}
B.通过关键字new
public class Stringlei
{
public s...
分类:
编程语言 时间:
2015-06-17 09:32:59
阅读次数:
198
#region 移除数组中重复数据
///
/// 移除数组中重复数据
///
/// 需要除重的数组
/// 不重复数组
public static string[] DelRepeatData(string[] array)
{
return array....
分类:
编程语言 时间:
2015-06-17 09:33:06
阅读次数:
148
public static class Sort
{
#region 设置PanelControl上按钮显示位置
///
/// 设置按钮显示位置
///
/// 需要调整按钮顺序的Panel
/// 按钮间隔
public static void SetButtonCen...
分类:
编程语言 时间:
2015-06-17 09:35:35
阅读次数:
259
编写new和delete时需固守常规本章节介绍在自定义new和delete函数时,应该需要遵守哪些要求,为什么遵守这些要求。首先,如下代码所述,当我们定义new的时候需要把size为0的内存申请考虑进去,为什么当内存申请为0时却分配1个字节的内存。大家想一下当你定义一个空的classA时,sizeof(A)占据大小是多小?很显然占据1个字节的空间,这是系统分配内存时在这种情况下遵守的规则,我们可以自...
分类:
编程语言 时间:
2015-06-17 09:33:19
阅读次数:
129
1,首先来看看如何在Swift中定义一个类和类里面的属性、构造函数、方法及类方法import Foundationclass Hello{ //成员属性 var _name:NSString?="jikexueyuan" //构造函数 init(){ } ...
分类:
编程语言 时间:
2015-06-17 09:28:04
阅读次数:
155
插入排序的基本逻辑就是将最小的元素移动到左边,左边的数组是有序的,右边的数组基本上不需要动,插入排序运行的时间很大情况取决于输入元素的初始顺序,对于一个很大的且其中的元素已经有序的数组进行排序会比随机顺序的数组或者逆序的数组快很多。插入排序对部分有序的数组是非常有效的,数组中的每个元素都离最终的位置...
分类:
编程语言 时间:
2015-06-17 09:26:43
阅读次数:
135