virtual属性对类继承的影响---学习笔记
2014-08-22 22:44
253 查看
C++ Primer Plus 第13章中 描述
1、 如果方法通过引用或指针调用
a、如果没有使用关键字virtual,程序将根据引用类型或指针类型选择方法。
b、如果使用了关键字virtual,程序将根据引用或指针指向的对象的类型来选择方法。
2、如果方法通过对象调用
virtual对方法的调用并不影响。
示例1:(ViewAcct()没有添加关键字virtual)
Brass dom("Dominic Banker", 11224, 4183.45);
BrassPlus dot("Dorothy Banker", 12118, 2592.00);
Brass &b1_ref=dom;
Brass &b2_ref=dot;
b1_ref.ViewAcct(); // 使用的是 Brass::ViewAcct()
b2_ref.ViewAcct(); // 使用的是 Brass::ViewAcct()
示例2:(ViewAcct()添加了关键字virtual,即ViewAcct为虚拟的方法)
Brass dom("Dominic Banker", 11224, 4183.45);
BrassPlus dot("Dorothy Banker", 12118, 2592.00);
Brass &b1_ref=dom;
Brass &b2_ref=dot;
b1_ref.ViewAcct(); // 使用的是 Brass::ViewAcct()
b2_ref.ViewAcct(); // 使用的是 BrassPlus::ViewAcct()
1、 如果方法通过引用或指针调用
a、如果没有使用关键字virtual,程序将根据引用类型或指针类型选择方法。
b、如果使用了关键字virtual,程序将根据引用或指针指向的对象的类型来选择方法。
2、如果方法通过对象调用
virtual对方法的调用并不影响。
示例1:(ViewAcct()没有添加关键字virtual)
Brass dom("Dominic Banker", 11224, 4183.45);
BrassPlus dot("Dorothy Banker", 12118, 2592.00);
Brass &b1_ref=dom;
Brass &b2_ref=dot;
b1_ref.ViewAcct(); // 使用的是 Brass::ViewAcct()
b2_ref.ViewAcct(); // 使用的是 Brass::ViewAcct()
示例2:(ViewAcct()添加了关键字virtual,即ViewAcct为虚拟的方法)
Brass dom("Dominic Banker", 11224, 4183.45);
BrassPlus dot("Dorothy Banker", 12118, 2592.00);
Brass &b1_ref=dom;
Brass &b2_ref=dot;
b1_ref.ViewAcct(); // 使用的是 Brass::ViewAcct()
b2_ref.ViewAcct(); // 使用的是 BrassPlus::ViewAcct()
相关文章推荐
- c++笔记06---继承,公有继承,继承方式对访控属性的影响,私有继承和保护继承
- [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件
- [原]Java程序员的JavaScript学习笔记(2——属性复制和继承)
- Objective-C学习笔记(二十五)——属性与方法的继承学习
- 虚函数 virtual function 笔记(与继承)----C++学习之路
- C++学习笔记(六)继承属性
- C++学习之成员函数的访问属性与继承属性对虚表构建的影响--个人理解
- C++学习笔记4--静态属性 静态方法 虚方法 抽象方法 多态性 析构函数 运算符重载 多继承 虚继承
- Ruby简洁学习笔记(二):类继承、属性、类变量
- Java程序员的JavaScript学习笔记(2——属性复制和继承)
- C++学习笔记1:virtual 继承
- python进阶学习笔记(四)——python中访问限制、创建类属性、定义实例方法、定义类方法、类的继承
- C#学习笔记--类的重要特性:继承(转载)
- c++入门学习笔记继承
- PMBOK 学习笔记2-组织的影响
- 访问form对象的关键属性和方法【学习笔记】
- 学习笔记--AxWIndowsMediaPlayer 属性
- 李浩学习计算机系列笔记——C#中属性
- C#2005 .NET3.0高级编程学习笔记————类和结构,类的数据成员,类的函数成员(方法、属性)
- vb.net类的属性,函数与继承的学习