liuqinh2s' blog

Do something cool!

多态:统一的接口,不同的实现

C++多态(polymorphism) 表示“以一个 public base class 的指针(或者 reference),寻址出一个 derived class object”

Layout Costs for Adding Encapsulation(封装)

意思是:为了添加封装所需要付出的内存布局花销

第一章 Object Lessons 介绍了 C++如何在背后实现一个对象,内存中的布局以及空间上的关系。

在计算机的原理中,要实现某个机制,我们总能找到很多种实现方式(对比着学习,多思考每种实现方法的利弊),C++的类的实现也不例外,让我们对比以下三种实现方式:

阅读全文 »

Java 没有引用传递,本质上都是值传递,只不过传递的值可以是指针(Java 没有指针,所以你也可以理解为对象,其实本质上还是指针)。

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Solution {

private void getString(String text){
text = "hello";
}

public static void main(String[] args) {
Solution solution = new Solution();
String text = "world";
solution.getString(text);
System.out.println(text);
}
}
阅读全文 »

字符串由 char 数组实现,字符串以\0结尾,\0是 ASCII 的第一个字符,用 bit 表示也就是:0000 0000,这可以方便我们找到字符串的结尾。

ASCII 字符由一个字节表示,实际上第一版的 ASCII 字符只用到了 7 个 bit,128 个字符,扩展版的 ASCII 使用了 8 个 bit。

1
2
char str[11];
strcpy(str, "0123456789\0");

为了节省内存,C/C++把常量字符串放到常量池中,当几个指针被赋值了相同的字符串常量时,实际上它们会指向相同的内存地址。但用常量字符串初始化数组,情况却不同。

阅读全文 »

数组和指针的区别:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int GetSize(int data[]){
return sizeof(data);
}

int _tmain(int argc, _TCHAR* argv[]){
int data1[] = {1, 2, 3, 4, 5};
int size1 = sizeof(data1);

int* data2 = data1;
int size2 = sizeof(data2);

int size3 = GetSize(data1);

printf("%d, %d, %d\n", size1, size2, size3);
}

答案是输出:20, 4, 4

阅读全文 »

基础理论课

  1. 数据结构和算法
  2. 操作系统
  3. 计算机组成原理与汇编
  4. 计算机网络

我列出这四门课,是因为国内本科结束之后,考研初试要考的就是这四门课。这也说明了这四门课是计算机专业非常重要的基础学科。复试的话会涉及到更深入的一点东西,比如:编译原理、软件工程、人工智能、多媒体技术、信号处理。

阅读全文 »
0%