1. what is virtual method?
虚函数表示基类和派生类之间的关系 使用virtual关键字 派生类可以override基类虚函数来实现多态 虚函数定义要求 基类和派生类中的函数名 返回值 和 参数 完全相同
2. what is Polymorphism?
Polymorphism表示 基类指针指向派生类对象 用来实现多态
3. difference between overloading and overriding
override 2个函数分别位于基类和派生类中 要求函数名 参数 返回值 完全相同 必须是虚函数 派生类通过override基类函数来实现多态
overload 2个函数位于同一个类中 要求函数名相同 参数不能相同
4. difference between abstract class and interface?How to decide to use which one?
abstract 抽象类 必须包含至少一个纯虚函数来保证该类不能被实例化 如果派生类没用完全重写基类纯虚函数 那么这个类也是抽象类 抽象类可以有默认实现 如果添加抽象类的成员函数 派生类不一定需要重写
interface 接口 成员函数只有声明 没有定义 不能使用virtual关键字 不能实力化 派生类必须全部实现接口的声明派生类通过实现接口
区别:
1) 一个类只能继承自一个abstract class但是可以继承自多个interface
2) abstract class表示is-a关系 interface表示like-a关系
3) abstract class中可以有默认实现 interface不可以
例子:
5. difference between pointer and reference
1) pointer占用内存 reference不占用内存
2) pointer指向特别对象后可以改变指向 reference一旦和对象绑定 就不能改变
本质:程序编译时会生成符号表,符号表上定义了变量名和变量指向的地址 pointer变量指向的地址是指针的地址 而reference指向的地址就是自己引用对象的地址 所以reference一旦绑定就不能再改变
6. what does word const mean?
const表示常量的概念 经常被用作函数参数和返回值
例如:
const char * p1 = "123"; // const 指针指向内容不能被改变
char * const p2 = "234"; // const 指针本身不能改变指向
const char* const p3 = "345"; // const指针不能改变指向而且const指针指向内容不能被改变
7. what are boxing and unboxing?describe generic of c#
boxing装箱 把值类型转换为引用类型
3步:
1) 在托管堆上分配为变量分配内存
2) 把值类型变量的内容copy到刚才分配在托管堆上的内存上
3) 返回托管对象的地址
装箱会操成性能损耗
unboxing拆箱 把引用类型转换为值类型
获得托管堆上引用类型数据的地址
接下来进行字段copy
8. difference between asp and asp.net
asp使用VBS和JS 面向结构
asp.net面向对象
9. advantage of stored procedure