c++ 基类已经存在virtual修饰的同名成员函数,派生类加不加无所谓,都是virtual的

 1 struct A
 2 {
 3     virtual void f() {tcout << _T("A::f()\n");}
 4 };
 5
 6 struct B : public A
 7 {
 8     void f() {tcout << _T("B::f()\n");}
 9 };
10
11 struct C : public B
12 {
13     void f() {tcout << _T("C::f()\n");}
14 };
15
16 struct D : public C
17 {
18     void f() {tcout << _T("D::f()\n");}
19 };
20
21
22 int _tmain(int argc, TCHAR * argv[], TCHAR * envp[])
23 {
24     A * pA = new D;
25     pA->f();
26
27     return 0;
28 }

结果:D::f()

时间: 2024-10-25 18:01:06

c++ 基类已经存在virtual修饰的同名成员函数,派生类加不加无所谓,都是virtual的的相关文章

C++空类编译器自动生成的6个成员函数

一.问题 在C++中,编译器会为空类提供哪些默认成员函数?分别有什么样的功能呢? 二.详解 1.空类,声明时编译器不会生成任何成员函数 对于空类,编译器不会生成任何的成员函数,只会生成1个字节的占位符. 有时可能会以为编译器会为空类生成默认构造函数等,事实上是不会的,编译器只会在需要的时候生成6个成员函数:一个缺省的构造函数.一个拷贝构造函数.一个析构函数.一个赋值运算符.一对取址运算符和一个this指针. 代码: [html] view plaincopy #include <iostream

基类成员在派生类中的访问属性——总结

首先回顾一下三种成员访问限定符: public(公用的):既可以被本类中的成员函数所引用,也可以被类的作用域内的其他函数(即类外)引用. private(私有的):只能被本类中的成员函数引用,类外不能调用(友元类除外) protected(受保护的):不能被类外访问,但可以在派生类的成员函数访问. 接下来就用一张表总结一下基类成员在派生类中的访问属性: 参考资料:<C++程序设计(第二版)>--谭浩强

protected 成员与派生类

受保护的成员对于类的用户来说时不可访问的 受保护的成员对于派生类的成员和友元来说是可访问的 其中,只能通过派生类对象来访问基类的受保护成员,派生类对于一个基类对象中的受保护成员没有任何访问特权 eg: class Quote { public: Quote() = default; Quote(const string &book, double sale_price) :bookno(book), price(sale_price) {} string isbn() const { retur

用含成员函数的类来实现输入和输出时间

用含成员函数的类来实现输入和输出时间. 程序: #include<iostream> using namespace std; class Time { public: void set_time(); void show_time(); private: int hour; int minute; int sec; }; int main() { Time t1; t1.set_time(); t1.show_time(); Time t2; t2.set_time(); t2.show_t

C++类的成员函数(在类外定义成员函数、inline成员函数)

类的成员函数(简称类函数)是函数的一种,它的用法和作用和前面介绍过的函数基本上是一样的,它也有返回值和函数类型,它与一般函数的区别只是:它是属于一个类的成员,出现在类体中.它可以被指定为private(私有的).public (公用的)或protected(受保护的). 在使用类函数时,要注意调用它的权限(它能否被调用)以及它的作用域(函数能使用什么范围中的数据和函数).例如私有的成员函数只能被本类中的其它成员函数所调用,而不能被类外调用.成员函数可以访问本类中任何成员(包括私有的和公用的),可

C++ Primer 学习笔记_22_类与数据抽象(8)--static 成员变量、static 成员函数、类/对象的大小

一.static 每个static数据成员是与类关联的对象,并不与该类的对象相关联!非static数据成员存在于类类型的每个对象中,static数据成员独立该类的任意对象存在. static成员函数没有this形参,它可以直接访问所属类的static成员,但是不能直接使用static成员! 1.static 成员变量 对于特定类型的全体对象而言,有时候可能需要访问一个全局的变量.比如说统计某种类型对象已创建的数量. 如果我们用全局变量会破坏数据的封装,一般的用户代码都可以修改这个全局变量,这时可

ES6里关于类的拓展(二):继承与派生类

继承与派生类 在ES6之前,实现继承与自定义类型是一个不小的工作.严格意义上的继承需要多个步骤实现 function Rectangle(length, width) { this.length = length; this.width = width; } Rectangle.prototype.getArea = function() { return this.length * this.width; }; function Square(length) { Rectangle.call(

程序实践:定义具有成员函数的类

现在从一个由GradeBook类和main函数组成的例子说起,此例是一系例循序渐进例子中的第一个,这些例子通过后续博文讲解,最终是一个功能众多的GradeBook类. 定义具有无参数的成员函数 这里,GradeBook类表示可供教师管理学生考试成绩的成绩簿,而在main函数创建了一个GradeBook对象.main函数使用这个对象和它的成员函数,在屏幕上显示一条欢迎教师进入成绩簿程序的信息. PS:关键字class后跟类名GradeBook.按照惯例,用户定义的类名字以大写字母开头,而且为了增强

C/C++ 类成员函数指针 类成员数据指针

普通函数指针:  "return_type (*ptr_name)(para_types) " 类成员函数指针: "return_type (class_name::*ptr_name)(para_types)" 类数据成员指针: "type class_name::* ptr_name"; C/C++: 1 class Demo 2 { 3 public: 4 Demo():data(100) 5 { 6 7 } 8 int data; 9 i