C++学习-类的指针

embedded/2025/3/30 17:47:14/

面向对象编程进阶

目录

  • 正规程序类定义的写法
  • 类的指针
  • 继承
  • 继承中的访问控制
  • 构造函数和析构函数
  • 多态和虚函数

正规程序类定义的写法

class student { // 类定义
public: // 公共属性,一般方法放publicbool set(int a);bool read() const; // 后面加const,只读不写student(); // 构造函数,里面有默认参数student(int a); // 传参private: // 私有属性int age;string name;
};

类的指针

student *p = new student(20, "张三"); // 新建一个student对象,类指针指向这个对象
p->name; // 这个新对象的name
delete p; // 调用析构函数

继承

student *p1; // 新建一个student父类指针
postgraduate *p2; // 新建一个子类指针
student a;
postgraduate b; // 新建父类对象a,子类对象b
p1 = &a; // 父类指针指向父类对象
p2 = &b; // 子类指针指向子类对象p1 = &b; // 父类指针指向子类对象,可以
p2 = &a; // 子类指针不可以指向父类对象

继承中的访问控制

在C++中,继承可以是公有的(public)、保护的(protected)或私有的(private)。默认情况下,如果没有指定,继承是公有的。

class Base {
public:void baseFunc() {}
};class Derived : public Base { // 公有继承void derivedFunc() {baseFunc(); // 可以访问基类的公有成员}
};

构造函数和析构函数

在继承中,基类的构造函数和析构函数不会被自动调用,需要在子类的构造函数和析构函数中显式调用。

class Base {
public:Base() {cout << "Base constructor called" << endl;}~Base() {cout << "Base destructor called" << endl;}
};class Derived : public Base {
public:Derived() : Base() { // 显式调用基类构造函数cout << "Derived constructor called" << endl;}~Derived() {cout << "Derived destructor called" << endl;// 注意:基类析构函数会自动调用,不需要显式调用}
};

多态和虚函数

多态是面向对象编程的一个重要特性,它允许通过基类指针或引用调用派生类的函数。

class Base {
public:virtual void func() { // 虚函数cout << "Base function called" << endl;}
};class Derived : public Base {
public:void func() override { // 覆盖基类的虚函数cout << "Derived function called" << endl;}
};int main() {Base *b = new Derived();b->func(); // 多态,调用Derived的funcdelete b;return 0;
}

在这个例子中,即使 bBase 类型的指针,但由于多态,调用的是 Derived 类的 func 函数。


http://www.ppmy.cn/embedded/144210.html

相关文章

了解扩散概率模型

一、说明 我们使用扩散概率模型提供高质量的图像合成结果,一类受非平衡考虑启发的潜变量模型热力学。我们的最佳结果是通过加权变分训练获得的根据扩散概率之间的新颖联系设计的界限模型和去噪分数与 Langevin 动力学相匹配,并且我们的模型自然地承认渐进式有损解压缩方案,…

STM32F103单片机使用STM32CubeMX创建IAR串口工程

打开stm32cubeMX&#xff0c;选择新建工程 输入单片机型号&#xff0c;在下面选中具体型号&#xff0c;然后点右上角 开始工程 第一步设置 调试接口&#xff0c;否则生成的工程就会下载不到单片机中&#xff0c;使用stlink或者jlink的话&#xff0c;在debug选项中直接选择ser…

网络安全应急响应流程图

一、网络安全应急响应建设的背景和现状 当前&#xff0c;许多地区和单位已经初步建立了网络安全预警机制&#xff0c;实现了对一般网络安全事件的预警和处置。但是&#xff0c;由于网络与信息安全技术起步相对较晚&#xff0c;发展时间较短&#xff0c;与其他行业领域相比&…

【Elasticsearch入门到落地】3、es与mysql的概念对比

接上篇《2、正向索引和倒排索引》 上一篇我们学习了什么是正向索引和倒排索引。本篇我们来学习Elasticsearch与Mysql的概念与区别。 一、文档 Elasticsearch是面向文档存储的&#xff0c;可以是数据库中的一条商品数据&#xff0c;一个订单信息。文档数据会被序列化为json格式…

2020年国赛高教杯数学建模E题校园供水系统智能管理解题全过程文档及程序

2020年国赛高教杯数学建模 E题 校园供水系统智能管理 原题再现 校园供水系统是校园公用设施的重要组成部分&#xff0c;学校为了保障校园供水系统的正常运行需要投入大量的人力、物力和财力。随着科学技术的发展&#xff0c;校园内已经普遍使用了智能水表&#xff0c;从而可以…

河南省的教育部科技查新工作站有哪些?

郑州大学图书馆&#xff08;Z12&#xff09;&#xff1a;2007年1月被批准设立“教育部综合类科技查新工作站”&#xff0c;同年12月被河南省科技厅认定为河南省省级科技查新机构。主要面向河南省的高校、科研机构、企业提供科技查新、查收查引等服务。 河南大学图书馆&#xf…

基于卷积神经网络的人脸表情识别系统,resnet50,mobilenet模型【pytorch框架+python源码】

更多目标检测、图像分类识别、目标追踪等项目可看我主页其他文章 功能演示&#xff1a; 人脸表情识别系统&#xff0c;卷积神经网络&#xff0c;resnet50&#xff0c;mobilenet【pytorch框架&#xff0c;python源码】_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基…

K8s面试系列:K8s常用 API 资源总结速记

写在前面 博文内容为 K8s 中常用的API 资源简单总结适合对K8s 有基本认知,温习,面试准备的小伙伴内容涉及:API 资源组成 ,SSA 和 CSA 资源操作方式,以及下面资源类别简单描述 工作负载:Deployments,StatefulSets,HorizontalPodAutoscaler (HPA)…服务: Service,Ingress,E…