做C#项目学习的知识点,后续会慢慢增加内容。
虚函数
-
定义:
- 非类的成员函数不能定义为虚函数
- 类的成员函数中静态成员函数和构造函数不能定义为虚函数
- 析构函数可以定义为虚函数(通常均定义为虚函数,便于delete)
- 在声明函数的类体中使用关键字“virtual”将函数声明为虚函数
public virtual Type
(不允许私有),而定义函数时不需要使用关键字“virtual” - 当将基类中的某一成员函数声明为虚函数后,派生类中的同名函数(函数名相同、参数列表完全一致、返回值类型相关)自动成为虚函数
- 如果声明了某个成员函数为虚函数,则在该类中不能出现和这个成员函数同名并且返回值、参数个数、类型都相同的非虚函数。在以该类为基类的派生类中,也不能出现和这个成员函数同名并且返回值、参数个数、类型都相同的非虚函数
-
作用
实现多态性:通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数
线程与进程
-
线程
- 线程是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程的实际运作单位。
-
进程
进程是程序执行的实例,是CPU资源分配的最小单位。
每个进程提供执行程序所需的资源,具有虚拟地址空间、可执行代码、对系统对象的打开句柄、安全上下文、唯一进程标识符、环境变量、优先级类、最小和最大工作集大小,以及至少一个执行线程。
每个进程都从一个“主线程”开始,并可以从它的任何线程中创建其他的线程。 -
线程与进程的区别
- 线程共享创建它的进程的地址空间,进程有自己的地址空间
- 线程可以直接共享数据段,进程有父进程的数据段副本
- 线程之间可以互相通信,进程必须使用进程间通信
- 新线程很容易创建,新进程需要父进程的复制(???)
- 线程可以对同一进程的线程进行相当大的控制,进程只能对子进程进行控制
- 对主线程的更改(取消、改变优先级等)可能会影响进程中其他线程的行为,对父进程的更改不会影响其他进程
-
线程安全
- 针对于多线程任务同时操作全局变量或静态变量的情况