首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++继承和成员函数指针

在C++中,继承是一种代码复用的方式,允许一个类(子类)从另一个类(父类)继承属性和方法。成员函数指针是指向类的成员函数的指针,可以用来调用类的成员函数。

继承的分类:

  1. 单继承:一个类只能继承一个父类
  2. 多继承:一个类可以继承多个父类
  3. 多层继承:一个类可以继承多个父类,形成多层继承结构

继承的优势:

  1. 代码复用:子类可以复用父类的属性和方法,减少代码量
  2. 扩展性:子类可以继承父类的属性和方法,并进行扩展,满足新的需求
  3. 灵活性:子类可以根据需要重写父类的方法,实现不同的功能

成员函数指针的应用场景:

  1. 回调函数:在类的成员函数中作为回调函数,实现特定的功能
  2. 事件处理:在类的成员函数中作为事件处理函数,处理特定的事件
  3. 策略模式:在类的成员函数中作为策略模式的策略函数,实现不同的策略

推荐的腾讯云相关产品和产品介绍链接地址:

  1. 腾讯云CVM:https://cloud.tencent.com/product/cvm
  2. 腾讯云CLB:https://cloud.tencent.com/product/clb
  3. 腾讯云COS:https://cloud.tencent.com/product/cos
  4. 腾讯云CDN:https://cloud.tencent.com/product/cdn
  5. 腾讯云TKE:https://cloud.tencent.com/product/tke

以上是关于C++继承和成员函数指针的相关信息,如果您有其他问题,欢迎继续提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++成员指针

1.成员指针简介 成员指针C++引入的一种新机制,它的申明方式使用方式都与一般的指针有所不同。成员指针分为成员函数指针成员数据指针。 2....成员函数指针 在事件驱动多线程应用中被广泛用于调用回调函数。在多线程应用中,每个线程都通过指向成员函数指针来调用该函数。在这样的应用中,如果不用成员指针,编程是非常困难的。...成员函数指针的定义格式: 成员函数返回类型 (类名::*指针名)(形参)= &类名::成员函数成员指针使用示例: #include #include using...this指针的值,以便进行函数调用; (2)为成员函数指针赋值时,需要显示使用&运算符,不能直接将类名::成员函数名赋给成员函数指针。...成员数据指针 一个类对象生成后,它的某个成员变量的地址实际上由两个因素决定:对象的首地址成员变量在对象之内的偏移量。成员数据指针是用来保存类的某个成员数据在类对象内的偏移量的。

1.3K10

C++成员指针

文章目录 1.成员指针简介 2.成员函数指针 3.数据成员指针 1.成员指针简介 成员指针C++ 引入的一种新机制,它的申明方式使用方式都与一般的指针有所不同。...成员指针分为成员函数指针和数据成员指针。 2.成员函数指针 在事件驱动多线程应用中被广泛用于调用回调函数。在多线程应用中,每个线程都通过指向成员函数指针来调用该函数。...成员函数指针的定义格式: 成员函数返回类型 (类名::*指针名)(形参)= &类名::成员函数成员指针使用示例: #include #include using...this指针的值,以便进行函数调用; (2)为成员函数指针赋值时,需要显示使用&运算符,不能直接将“类名::成员函数名”赋给成员函数指针。...3.数据成员指针 一个类对象生成后,它的某个成员变量的地址实际上由两个因素决定:对象的首地址成员变量在对象之内的偏移量。数据成员指针是用来保存类的某个数据成员在类对象内的偏移量的。

75930

C++继承——切片、隐藏、默认成员函数、菱形

,隐藏了父类的fun函数,此时子类需要传参,如果想访问,要加上作用域,即b.A::fun() 对于成员函数,只要父类子类的同名成员函数函数名相同就构成了隐藏。...对于普通类成员,默认生成的四个成员函数(构造、析构、拷贝、赋值): 1.内置类型:构造析构——内置类型不处理,拷贝赋值——内置类型浅拷贝/值拷贝 2.自定义类型:构造析构——自定义类型调用对应的构造函数析构函数...我们前面所说的实际上都是单继承,单继承:一个子类只有一个直接父类时称这个继承关系为单继承 然而,对于C++而言,还有多继承,多继承:一个子类有两个或以上直接父类时称这个继承关系为多继承 而菱形继承是多继承比较特殊的情况...这里是通过了BC的两个指针,指向的一张表。这两个指针叫虚基表指针,这两个表叫虚基表。虚基表中存的偏移量。...优先使用对象组合有助于你保持每个类被封装 ---- 九、结语 C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。

23630

C++C++ 类中的 this 指针用法 ② ( 常量成员函数 | const 修饰成员函数分析 )

一、常量成员函数 1、const 修饰成员函数分析 在 C++ 类中 , 普通的非静态成员函数 , 可以使用 const 进行修饰 , 在 下面的 Student 类中 , 定义了 void fun(int...void fun(int age, int height) const const 修饰的是 fun 函数的 第一个参数 Student* pThis 指针指向的内存空间 ; C++ 编译器会将 void...* pThis 指针指向的内存空间 指针本身 // // C++ 编译器会将该函数转为 Student_fun(Student* pThis, int age, int height) //... 指针本身 // // C++ 编译器会将该函数转为 Student_fun(Student* pThis, int age, int height) // 使用 const 修饰函数 ,...第一个参数 Student* pThis 指针指向的内存空间 指针本身 // // C++ 编译器会将该函数转为 Student_fun(Student* pThis, int age, int

17820

C++中的const成员变量成员函数

const 可以用来修饰成员变量成员函数。 const成员变量 const 成员变量的用法普通 const 变量的用法相似,只需要在声明时加上 const 关键字。...初始化 const 成员变量只有一种方法,就是通过构造函数的初始化列表,这点在前面已经讲到了,请猛击《C++初始化列表》回顾。...常成员函数需要在声明定义的时候在函数头部的结尾加上 const 关键字,请看下面的例子: class Student{ public: Student(char *name...需要强调的是,必须在成员函数的声明定义处同时加上 const 关键字。...char *getname() constchar *getname()是两个不同的函数原型,如果只在一个地方加 const 会导致声明定义处的函数原型冲突。

19530

C++类的成员函数 | 成员函数

C++成员函数的性质 在C++中,类的成员函数函数的一种,它有返回值函数类型,它与一般函数的区别只是:  属于一个类的成员,出现在类体中。...C++在使用类函数时,要注意调用它的权限以及它的作用域,私有的成员函数只能被本类中的其他成员函数所调用,而不能被类外调用,成员函数可以访问本类中任何成员,可以引用在本作用域中有效的数据。 ...在C++中,有的函数并不是准备为外界调用的,而是为本类中的成员函数所调用的,就应该将它们指定为 private。...C++类外定义成员函数 上述所讲成员函数是在类体中定义的,在C++中也可以在类体中只写成员函数的声明,而在类的外面进行函数定义。...以上,如果你看了觉得对你有所帮助,就给小林点个赞叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C++类的成员函数 | 成员函数 更多案例可以go公众号:C语言入门到精通

1.8K74

C++ this指针:用于在成员函数中指向调用该函数的对象

C++中this指针是一个指向当前对象的指针。在成员函数中,可以使用this指针来访问调用该函数的对象的成员变量成员函数。...一、定义使用this指针 this指针是在成员函数内部定义的一个常量指针。它存储了当前对象的地址,可以通过它访问当前对象的成员变量成员函数。...在成员函数内,无需显式地传入this指针,编译器会自动将当前对象的地址赋给this指针。...这里使用了*this来访问调用该函数的对象。 三、作为函数参数的this指针 this指针也可以作为函数参数传递。这种情况下,可以在函数内部访问其他对象的成员变量成员函数。...四、总结 this指针C++中是一个非常重要的概念,可以用来访问调用该函数的对象,作为返回值返回,或者作为函数参数传递。掌握this指针的使用可以帮助我们更好地编写面向对象的程序。

18240

C++基础——C++面向对象之类、对象与继承基础总结(类对象概念、构造函数与析构函数、this指针继承

1.1 类对象基本概念  1.2 构造函数析构函数 1.3 this指针 2 继承 3 总结 ---- 0 引言         C++面向对象有三大特征,分别是继承、多态封装,接下来的三篇博文将会对这三大特性分别进行总结...类用于指定对象的形式,它包含了数据表示法用于处理数据的方法。类中的数据方法称为类的成员函数在一个类中被称为类的成员C++中的类跟Java语言实在太像了)。         ...2)保护继承(protected): 当一个类派生继承保护基类时,基类的公有保护成员将成为派生类的保护成员。...3)私有继承(private):当一个类派生继承私有基类时,基类的公有保护成员将成为派生类的私有成员。 下面举个例子说明继承的使用。         ...+中类对象的基本概念,给出了构造函数析构函数的区别,并总结了this指针的使用方法,有了以上基础后,进一步总结了C++语言的三大特征之一继承的基本概念,并结合实例演示了继承的使用方法。

72850

c++系列之二 指向成员函数指针(烧脑)

关于成员函数指针 成员函数指针C++最少用到的语法之一,甚至有经验的C++码农有时候也会被它搞晕。这是一篇针对于初学者的教程,同时也给有经验的码农分享了一些我个人对底层机制的挖掘。...这个例子证明了成员函数指针不是常规指针。另外,为什么C++如此费心地去发明这样的语法?很简单,因为它常规指针是不同的东西,而且这样的类型转换也是违反直觉的。...C++类型转换规则 非虚函数情形 我们在前面一节看到,成员函数指针并不是常规指针,所以,成员函数指针(非静态)不能被转换成常规指针(当然,如果哪个脑残真想这么做的话,可以使用汇编技术来暴力解决),因为成员函数指针代表了...成员函数调用 this 指针 现在我们回到文章最开始的地方。为什么一个空指针也能调用成员函数?...成员函数指针常规指针的对比 不同情形下的成员函数指针转换规则 如何使用成员函数指针数组来解决特定的设计问题 编译器是如何解释成员函数调用的 扩展:成员变量指针 http://luodw.cc/2015

2.8K20

C++:33---类成员指针

与指向数据成员指针类似,我们也可以声明一个指向于成员函数指针 语法注意事项: 指向成员函数指针也需要指定目标函数的返回类型形参列表 如果成员函数时const的或者是引用成员,则我们必须将const...:get_cursor; 因为定义成员函数指针时,需要同时指定目标函数的返回值类型形参列表,因此对于有重载的成员函数不会造成冲突。...; 普通函数指针不同的是,在成员函数指向该成员指针之间不存在自动转换规则: char (Screen::*pmf2)(Screen::pos, Screen::pos)const; pmf2 =...在成员函数指针之间不存在自动转换规则 使用成员函数指针 使用数据成员指针一样,我们需要使用....get = &Screen::get; 其他函数指针类似,我们可以将指向成员函数指针作为某个函数的返回类型或形参类型。

82030

C++】This指针复制构造函数

this指针 在每个成员函数中,都包含一个特殊的指针。 这个指针的名字是固定的,就是this指针。 this指针是指向类对象的指针,它的值是当前被调用的所在对象的地址!...this指针是指向本类对象的指针,它作为参数传递给成员函数 this指针是隐式使用的。由编译器自动实现,我们不必人为的在形参中添加this指针。...因为this表示这个对象的指针,所以*this就表示这个对象了 (*this).调用成员变量/函数this->调用成员变量/函数,是一样的效果!...注意给*this添加括号,因为.运算符的优先级比较高 复制构造函数 复制构造函数普通构造函数有一些相似处的,也没有返回值,类名作为函数名!...(time);//第三次第四次调用复制构造函数 cout << time.getHour() << ":" << time.getMinute() << ":" << time.getSecond

80120

VCGCC成员函数指针实现的研究(三)

接上一篇 VCGCC内成员函数指针实现的研究(二) 虚继承 终于到最后的虚继承了。...*ptr)(); return 0; } VC虚继承成员函数指针实现 因为是兼容虚继承非虚继承的,所以赋值的部分的汇编是一样的。这里就不贴了。关键在于执行期它是怎么找到虚基类的。...image.png 图十七:VC多重虚继承的取成员变量虚基类成员变量 GCC虚继承成员函数指针实现 同样,赋值部分没什么特别的,前面都一样。...image.png 图十八:GCC多重虚继承的直接函数调用 image.png 图十九:GCC多重虚继承的的空虚基类函数指针调用 首先,GCC的直接调用调用空虚基类成员函数时,cx直接是传入的子类的地址...用foo_c的指针去调用foo_b的成员函数的时候是需要对指针值做些offset修正的。 然而 获取成员函数指针成员函数调用是分开的场景。

77810

VCGCC成员函数指针实现的研究(二)

、接上一篇 VCGCC内成员函数指针实现的研究(一) 接下来是多重继承,用到的测试代码如下所示: #include #include #include <algorithm...*ptr)(); return 0; } VC多重继承成员函数指针实现 image.png 图八:VC多重继承指针赋值操作 赋值的部分继承是一样的。...GCC多重继承成员函数指针实现 image.png 图十二:GCC多重继承函数指针赋值 哈,GCC的多重继承的赋值部分也继承一样,那么调用呢?...image.png 图十三:GCC多重继承函数指针调用 如上图所示,比单继承多了两行,第一行是调整虚表地址到foo_b,这点VC一样。后面增加的add指令是调整成员函数的this指针地址。...下一篇 VCGCC成员函数指针实现的研究(三)

66120

C++】静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )

一、静态成员函数简介 1、静态成员函数概念 静态成员函数归属 : 在 C++ 类中 , 静态成员函数 是一种 特殊的函数 , 该函数属于类 , 而不是属于 类实例对象 ; 静态成员函数调用不依赖于对象..., 也不能在 静态成员函数 中访问 普通的 成员变量 成员函数 ; 2、静态成员函数声明 静态成员函数声明 : 使用 static 关键字 修饰 成员函数 , 就可以将 普通的成员函数 转为 静态成员函数...: 使用 类名 域操作符 访问 : // 通过 类名:: 调用 静态成员函数 Student::fun(); 使用 对象 访问 : // 通过 对象....调用 静态成员函数 s.fun(); 4、静态成员函数只能访问静态成员 静态成员函数内容要求 : 静态成员函数 只能访问 静态成员变量 其他静态成员函数 静态成员函数 不能访问 非静态成员变量 或 非静态成员函数..., 普通的 成员变量 成员函数 , 需要 通过 类 的 实例对象 来访问 , 需要 依托于 对象才能存在 , 而 静态成员函数 可以在 不创建 实例对象的前提下被调用 , 因此 静态成员函数中 不能访问

27320

C++类声明成员函数定义 | 引用多个成员对象

C++类声明成员函数定义的分离 在C++中,一般做法是将类的声明放在指定的头文件中,程序员如果想用该类,只要把有关的头文件包含进来即可,不必在程序中重复书写类的声明,以减少工 作量,提高编程的效率。 ...由于在头文件中包含了类的声明,因此在程序中就 可以用该类来定义对象,由于在类体中包含了对成员函数的声明,在程序中就可以调用这些对象的公用成员函数。...C++类库有两种:  C++编译系统提供的标准类库 自定义类库,用户根据自己的需要做成的用户类库, 提供给自己自己授权的人使用。...C++类库包括两个组成部分: 类声明头文件 已经过编译的成员函数的定义,它是目标文件。 案例:C++引用多个对象的成员。...以上,如果你看了觉得对你有所帮助,就给小林点个赞叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C++类声明成员函数定义 | 引用多个成员对象 更多案例可以go公众号:C语言入门到精通

1.8K83

C++继承 ⑨ ( 继承成员变量同名的处理方案 )

一、继承成员变量同名的处理方案 1、继承成员变量同名的场景说明 子类 继承 父类 的 成员 , 如果 子类 中定义了 与 父类成员变量 同名的 变量 , 子类 仍然 可以 继承 父类的 同名 成员变量...; 子类的成员变量 与 继承自父类成员变量 的 名称 出现相同的情况 , 使用 域作用符 :: 对同名的 成员变量 进行区分 ; 2、使用域作用符区分同名成员变量 子类中使用 域作用符 :: 处理同名成员变量的方案..., c; 两个成员变量 ; class Child : public Parent { public: int b, c; }; 显然 , 父类 Parent 子类 Child 中 , 成员变量...b 发生了冲突 , 父类 子类 中各自定义了一个成员变量 b ; 在 Child 子类内部 , 如果想要访问 父类的 b 成员变量 , 可以使用 Parent::b 进行访问 ; 如果想要访问 子类的...b 成员变量 , 可以使用 Child::b 进行访问 , 也可以不使用域作用符 , 直接访问 b ; 子类 Child 中 , 定义了 print 成员函数 , 在该函数中 , 通过 Parent:

23420

c++ 函数指针

函数指针基础: 1. 获取函数的地址 2. 声明一个函数指针 3.使用函数指针来调用函数 获取函数指针函数的地址就是函数名,要将函数作为参数进行传递,必须传递函数名。...声明函数指针 声明指针时,必须指定指针指向的数据类型,同样,声明指向函数指针时,必须指定指针指向的函数类型,这意味着声明应当指定函数的返回类型以及函数的参数列表。...例如: double cal(int); // prototype double (*pf)(int); // 指针pf指向的函数, 输入参数为int,返回值为double pf = cal;...// 指针赋值 如果将指针作为函数的参数传递: void estimate(int lines, double (*pf)(int)); // 函数指针作为参数传递 使用指针调用函数 double...,直接传入函数名 estimate(line_num, cal_m1); estimate(line_num, cal_m2); return 0; } 函数指针数组: 这部分非常有意思: #

43620

C++类的this指针,静态成员,友元函数友元类

---- 1. this指针 在上篇讲C++中类,对象,封装,继承(派生),多态的时候,this指针出现在成员函数中,并使用->成员提取符操作成员变量。...在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址,this 指针是所有成员函数的隐含参数,实际上成员函数默认第一个参数为T* const register this,this指针成员函数的开始执行前构造的...,它可以用来指向调用对象,并且只可以在成员函数中调用,对于全局函数,静态函数,友元函数,都不能使用this指针。...静态数据成员普通数据成员一样遵从public,protected,private访问规则。 相对于类的成员,必须在构造对象以后才会分配内存空间,只能通过对象名访问。...对于友元函数,放在publicprivate,或者是protected,都是可以的。

1.4K10
领券