C++入门教程:第四篇 - 面向对象编程基础

别再手动点运行了!用西门子PLC1200自动触发VisionMaster流程(S7通信保姆级教程) 本文详细介绍了如何通过西门子PLC1200与VisionMaster的S7通信协议实现工业视觉自动化触发。从硬件连接到PLC端信号处理逻辑设计,再到VisionMaster事件配置实战,提供了一套完整的保姆级教程,帮助工程师实现高效、稳定的工业视觉自动化系统。 阅读详情

C++入门教程:第四篇 - 面向对象编程基础

面向对象编程(OOP)是C++的核心特性之一,它帮助程序员通过封装、继承和多态等机制来组织和管理代码。理解这些概念能够显著提高代码的复用性、可维护性和可扩展性。本文将介绍C++中的面向对象编程基础,包括类的定义与使用、继承和多态的实现。

1. 类和对象

1.1 类的定义

类是C++中的基本构造块,它是一个自定义的数据类型,用于封装数据和操作这些数据的方法。类的定义包括数据成员(属性)和成员函数(方法)。

1.1.1 类的基本结构

以下是一个简单的类定义示例:


cpp

#include <iostream>

using namespace std;

// 类定义
class Car {
public:
    // 数据成员
    string brand;
    int year;

    // 成员函数
    void displayInfo() {
        cout << "Brand: " << brand << ", Year: " << year << endl;
    }
};

int main() {
    // 创建对象
    Car myCar;
    myCar.brand = "Toyota";
    myCar.year = 2020;

    // 调用成员函数
    myCar.displayInfo();

    return 0;
}

cpp

1.1.2 构造函数

构造函数是特殊的成员函数,在对象创建时自动调用,用于初始化对象的状态。


cpp

#include <iostream>

using namespace std;

class Car {
public:
    string brand;
    int year;

    // 构造函数
    Car(string b, int y) : brand(b), year(y) {}

    void displayInfo() {
        cout << "Brand: " << brand << ", Year: " << year << endl;
    }
};

int main() {
    // 使用构造函数创建对象
    Car myCar("Honda", 2022);
    myCar.displayInfo();

    return 0;
}

cpp

1.1.3 析构函数

析构函数是另一个特殊的成员函数,在对象销毁时自动调用,用于释放资源。


cpp

#include <iostream>

using namespace std;

class Car {
public:
    string brand;
    int year;

    // 构造函数
    Car(string b, int y) : brand(b), year(y) {}

    // 析构函数
    ~Car() {
        cout << "Car object is being destroyed" << endl;
    }

    void displayInfo() {
        cout << "Brand: " << brand << ", Year: " << year << endl;
    }
};

int main() {
    Car myCar("Ford", 2019);
    myCar.displayInfo();

    return 0;
}

cpp

2. 继承

继承是OOP的一个重要特性,它允许一个类继承另一个类的属性和方法,从而实现代码的重用和扩展。

2.1 基类和派生类

基类是被继承的类,派生类是继承基类的类。派生类可以访问基类的公共和保护成员。

2.1.1 公共继承

以下示例展示了如何定义基类和派生类:


cpp

#include <iostream>

using namespace std;

// 基类
class Vehicle {
public:
    string brand;

    void displayBrand() {
        cout << "Brand: " << brand << endl;
    }
};

// 派生类
class Car : public Vehicle {
public:
    int year;

    void displayInfo() {
        displayBrand();
        cout << "Year: " << year << endl;
    }
};

int main() {
    Car myCar;
    myCar.brand = "Chevrolet";
    myCar.year = 2023;

    myCar.displayInfo();

    return 0;
}

cpp

2.1.2 访问控制

C++中的继承有三种访问控制类型:public、protected和private。公共继承是最常用的继承方式,它允许派生类访问基类的公共成员。


cpp

#include <iostream>

using namespace std;

// 基类
class Base {
public:
    int pubVar;
protected:
    int protVar;
private:
    int privVar;
};

// 派生类
class Derived : public Base {
public:
    void accessMembers() {
        pubVar = 1; // 访问公有成员
        protVar = 2; // 访问保护成员
        // privVar = 3; // 错误:无法访问私有成员
    }
};

cpp

3. 多态

多态是OOP的另一重要特性,它允许通过基类指针或引用调用派生类中的重写方法,从而实现运行时动态绑定。

3.1 虚函数

虚函数是基类中声明为virtual的函数,允许派生类重写(override)该函数,实现动态绑定。

3.1.1 虚函数的使用

以下示例展示了如何使用虚函数实现多态:


cpp

#include <iostream>

using namespace std;

class Base {
public:
    virtual void show() {
        cout << "Base class show()" << endl;
    }
};

class Derived : public Base {
public:
    void show() override {
        cout << "Derived class show()" << endl;
    }
};

int main() {
    Base* ptr;
    Derived obj;
    ptr = &obj;

    // 调用虚函数
    ptr->show(); // 输出: Derived class show()

    return 0;
}

cpp

3.1.2 虚析构函数

如果基类包含虚函数,通常应该将析构函数声明为虚函数,以确保派生类的析构函数也会被调用。


cpp

#include <iostream>

using namespace std;

class Base {
public:
    virtual ~Base() {
        cout << "Base destructor" << endl;
    }
};

class Derived : public Base {
public:
    ~Derived() {
        cout << "Derived destructor" << endl;
    }
};

int main() {
    Base* ptr = new Derived();
    delete ptr; // 正确调用Derived析构函数
    return 0;
}

cpp

4. 总结

本文介绍了C++中的面向对象编程基础,包括类和对象的定义与使用、继承和多态的实现。这些知识能够帮助你设计和实现更复杂的程序结构,提高代码的可维护性和可扩展性。在下一篇教程中,我们将深入探讨C++中的模板编程,包括函数模板和类模板的使用。

希望这篇文章对你有所帮助。如果你有任何问题或建议,欢迎在评论区留言。我们下篇文章见!

C++基础:面向对象编程 1. 面向过程: 当软件规模超过一定的尺度后,采用结构化程序设计,其开发和维护就越来越难空值。其根本原因就在于面向过程的结构化程序设计的方法与现实世界往往不一致,结构化程序的思想往往很难贯彻到底。 在结构化设计中,往往采用的是“自顶向下,逐步细化”的思想。具体操作方法是模块化,是按照功能来分的,所以也称为功能块(函数)。在c++中称为一个函数,一个函数解决一个问题,即实现一个功能或一个操作。 在模块化的思想中已经出现了封装的概念,这个封装是将数据封装到模块中,即局部变量。电脑这是很不彻底的,因为模块是 阅读详情

相关推荐

C++基础入门教程

1 C++初识 1.1 第一个C++程序 编写一个C++程序总共分为4个步骤 创建项目 创建文件 编写代码 运行程序 1.1.1 创建项目 ​ Visual Studio是我们用来编写C++程序的主要工具,我们先将它打开 1.1.2 创建文件 右键源文件,选择添加->新建项 给C++文件起个名称,然后点击添加即可。 1.1.3 编写代码 #include<iostream> using namespace std; int main() { cout <<

张许平的博客 4万+

C++ 面向对象程序设计

在面向对象的思想中,我们把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。当然,一个应用程序会包含多个对象,通过多个对象的相互配合即可实现应用程序所需的功能,这样当应用程序功能发生变动时,只需要修改个别对象就可以了,使代码更容易维护。面向对象的程序设计思想可以帮助我们创建结构良好的,可复用的代码,更好地描述和理解真实世界的问题。封装可以隐藏对象的内部表示,只通过对象的方法暴露必要的操作和功能。这使得新类可以复用和扩展已存在的类的代码,提高了代码的复用性,并能够表达类之间的"is-a"关系。

2201_75772333的博客 4614

C++ 基础入门教程

C++ 是一门静态类型、编译型的多范式编程语言,兼容 C 语言并扩展了面向对象(OOP)、泛型编程等特性,广泛用于系统开发、游戏、嵌入式、高性能计算等领域。以下从核心基础概念入手,带你快速掌握 C++ 入门要点。

2501_94533582的博客 1198

【第一天】C++面向对象程序设计-基础入门(超详细)

C++是对C的扩展,任何有效的c程序都是有效的c++程序,c++程序可以使用已有的c程序库。 C++语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c++融合了3种不同的编程方式:c语言代表的过程性语言.c++在c语言基础上添加的类代表的面向对象语言.c++模板支持的泛型编程。我们常常将这两门语言统称为“C/C++”。

m0_75045191的博客 1721

C++编程新手到高手:CS42Cpp课程学习之路

本文还有配套的精品资源,点击获取 简介:"CS42Cpp"课程设计为初学者提供了一个系统的C++学习路径,涵盖了从基础知识到高级概念的全面内容。课程分为两个部分:前4周的基础阶段,后16周的深入阶段,逐渐引导学员掌握C++的语法、面向对象编程、高级特性如模板和STL使用。课程利用"CS42Cpp-master"资源包提供实践材料,帮助学员通过实际编码提高编程技能和解决问题的...

weixin_35982453的博客 1606

C++初学者深度进阶课程:Piscine_CPP

C++,一种静态类型、编译式、通用的编程语言,由Bjarne Stroustrup在1979年开发,最初被称为C with Classes。C++是在C语言的基础上增加了面向对象编程、泛型编程和异常处理等特性。C++强大而灵活,广泛应用于软件开发各个领域。函数是C++中执行特定任务的代码块。它们提供了一种组织代码的方法,使其更加模块化,易于维护和复用。函数声明提供了一个函数的接口,告诉编译器函数的名称、返回类型和参数列表。而函数定义则是函数的实现细节,编译器根据这些细节来生成代码。

weixin_42527589的博客 802

c++面向对象编程

面向对象编程的几个重要概念:类&对象,封装、继承、多态、抽象

qq_45592093的博客 1990

有限元缺陷:剪切锁死

有限元缺陷:剪切锁死

wsxww11的博客 5191

Cpp入门基础

定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下 ⾯的rand不在冲突了。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。

2401_86658278的博客 5206

CoppeliaSim+matlab+simulink七轴机械臂仿真

七轴机械臂vrep+matlab+simulink 仿真

a1233219的博客 3555

ROS四旋翼无人机快速上手指南(4):阿木实验室PX4功能包飞行控制分析与讲解(重点章节)

成就更好的自己 这一章详细讲解一下阿木实验室(AMOV)的开源项目px4_command功能包,此功能包通过mavlink协议直接控制烧录px4固件的自驾仪,还融合了来自各个传感器的位姿,距离等信息,此外,功能包提供的接口向上对接应用层算法级的程序例如SLAM,kfc目标检测引导,路径规划等算法,因此,在整个无人机控制中起到了承上启下至关重要的作用。 用到的文件及工具包链接如下: AMOV实验室源码如下: https://gitee.com/theroadofengineers/px4_comman

The Road of Engineer 6171

C++面向对象编程:从基础到实战

本文介绍了C++面向对象编程(OOP)的基础概念和核心特性。主要内容包括:1)类与对象的定义与创建,展示如何通过类声明和实现来定义对象蓝图;2)封装与访问控制,讲解public、private和protected三种访问权限;3)构造函数与析构函数的作用及使用方法;4)拷贝构造函数和赋值运算符的实现。文章通过学生类(Student)、矩形类(Rectangle)等具体示例,演示了面向对象编程的基本语法和应用场景,为C++开发者提供了从基础到实践的编程指南。

编程世界如山海,探索不止。 1万+

手把手教你排查libstdc++.so.6版本问题:从GLIBCXX缺失到完美解决

本文深入解析Linux系统中常见的GLIBCXX版本缺失问题,以`ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.29' not found`为例,从动态链接原理入手,提供使用`strings`和`find`命令的诊断方法,并详细对比了四种解决方案的优缺点。文章重点推荐通过设置`LD_LIBRARY_PATH`或更新系统库的安全策略,并最终建议使用Docker容器化技术实现环境依赖的根治与统一管理。

j7k8l的博客 301

面向对象编程入门:掌握C++类的基础(1/3)

类的定义是面向对象编程(OOP)的核心。在C++等面向对象的编程语言中,类不仅仅是数据和方法的集合,它还定义了一种新的数据类型。理解类的定义对于掌握面向对象编程至关重要。在C++中,定义一个类涉及到指定类的名称、成员变量(属性)以及成员函数(方法这些成员变量和成员函数描述了该类的对象的状态和行为。public: // 公有访问修饰符// 构造函数// 初始化代码// 公有成员函数// 函数实现private: // 私有访问修饰符// 私有成员变量类的两种定义方式:1.

2301_77754590的博客 1746

深入浅出SSD:固态存储核心技术、原理与实战(文末赠书)

作为经典畅销书的升级版,本书在第1版的基础上新增了大量新知识(如闪存、UFS、测试、文件系统等),并改写或删减了许多过时或不适用的内容,总修改量超过60%。本书由SSD技术社区SSDFans的核心团队成员联合业界、高校SSD方面的专家共同完成,相对于第1版,内容更全面、更新,也更有深度。本书从产品、技术和应用3个维度展开,全面、详细讲解了SSD的发展历史、产品形态、工作原理、整体架构,以及各个功能模块的原理和使用,从SSD的前端接口协议到FTL算法,再到后端的闪存和纠错,以及测试,本书都有涉及。

阿玥的小博客 3126

正负数据如何归一化_生信干货 | LC-MS代谢组学QI软件下机数据代谢物筛选和归一化如何做?...

上海·2019第一届多层组学前言技术发展华东区客户研讨会倒计时1天LC-MS非靶向代谢组学数据下机啦~~拿到一堆数据怎么办?不会高端代码,也不会自己写脚本,我怎么处理数据?​本期小编带来了LC-MS非靶向代谢组学下机数据处理实用干货,包括:下机定性结果表格的解析、代谢物筛选如何做?以及定量数据如何做归一化?实用干货,赶紧来抢~~话不多说,赶紧来学习吧~~非靶向LC-MS代谢组学的分析流程LC-MS...

weixin_36441329的博客 2984

C++零基础入门教程:基础篇(一)

前言 嘿嘿,我叕来啦─=≡Σ(((つ•̀ω•́)つ!别问我为什么突然变成了零基础入门教程(一),因为前面那三篇都是基础的不能在基础的教程了。(其实是因为顺序乱了,而且那时候没有单独弄一个专栏,后面我会修改一下专栏的) (咳咳,我刚才什么也没说哈) 还是一样,可以看看其它文章: C++入门学习(一):Hello,world_◊◊的博客-优快云博客c++入门学习之Hello,world!(三连一下拜托了)https://blog.youkuaiyun.com/wwk100601/article/deta

红红火火恍恍惚惚哈哈哈嘿嘿嘿的博客(栓Q) 1299

麒麟服务器操作系统QT系列软件工具手册

对Qt提供的开发工具进行了一系列的优化之后,在日常的修复bug和维护框架的过程中,桌面研发对Qt的基础软件库也进行了部分优化工作,包括qtbase、qtwayland、qtscript、qt4-x11等Qt基础组件,涉及的Qt框架版本主要涉及到5.9和5.12两个版本。qt 的翻译,是由 ts 文件生成 qm 文件然后进行翻译,国产操作系统上qt 的翻译是由单独的qttranslations包中进行维护,其次部分汉化问题也是qt组件维护工作的一部分,qt的翻译机制如图4-7所示。

太极淘的博客 543

如何掌握C++面向对象编程:CPP-Crash-Course终极指南

面向对象编程(OOP)是C++语言的核心特性,也是从C程序员成功转型为C++开发者的关键所在。CPP-Crash-Course项目为C程序员提供了一个完整而实用的C++速成教程,特别专注于**C++类与对象**的深度解析。本文将带你深入了解这个优秀的开源项目,掌握C++面向对象编程的核心概念和实践技巧。 ## 📚 CPP-Crash-Course项目概述 CPP-Crash-Course是一

gitblog_00023的博客 553

[ vulhub漏洞复现篇 ] ActiveMQ反序列化漏洞复现(CVE-2015-5254)

Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。......

qq_51577576的博客 4445

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C++入门教程:从零开始掌握编程基础

C++是一门强大且灵活的语言,掌握它将为你的编程之路打下坚实的基础。希望本文能帮助你快速入门C++,开启编程之旅!

2404_88860379的博客 765

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C++面向对象编程基础:类与对象

本文介绍了C++面向对象编程中类与对象的核心概念。主要内容包括:1) 类的基本定义与访问控制权限(public/private/protected);2) 构造函数(默认、带参数、拷贝)和析构函数的使用;3) 类的封装特性与成员函数实现。通过Person类的完整示例,展示了如何定义类、创建对象、控制访问权限以及使用构造函数初始化对象。文章强调面向对象编程的封装特性,为后续继承和多态的学习奠定基础。

编程世界如山海,探索不止。 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C++小白成长记:从基础到实战的详细入门教程

C++作为一种通用编程语言,自1980年代问世以来,凭借其强大的性能、灵活性以及对面向对象编程的支持,广泛应用于各种领域。从系统软件、游戏开发到嵌入式系统和高性能应用,C++无处不在。相比其他编程语言,C++不仅继承了C语言的底层操作能力,还提供了高层次的抽象和面向对象的设计思想,使其在复杂项目的开发中得以脱颖而出。本篇文章旨在探讨C++初学者应该具备的入门知识以帮助你更快理解之后的类和对象。无论你是编程初学者,还是有经验的开发人员,希望通过本篇文章可以帮助你深入理解C++的独特之处。

17的博客 7190

C++入门教程:第一篇 - C++基础知识与开发环境设置

C++是一门由Bjarne Stroustrup于1983年开发的编程语言,基于C语言,并引入了面向对象编程(OOP)的概念。C++不仅保留了C语言的效率和灵活性,还添加了许多高级特性,包括类、继承、多态等。C++广泛用于开发性能要求高的应用程序,如游戏引擎、操作系统以及高频交易系统等。本文介绍了C++的基础知识,包括语言的主要特性、编译过程、开发环境的设置以及基本的编程概念。了解这些基础知识将帮助你在C++的学习道路上迈出坚实的第一步。

HYP_Coder的博客 1320

Dev-Cpp使用入门教程

(转载) #Dev-Cpp使用入门教程 下载地址依旧见:C/C++开发编译器等常用工具下载 安装版和绿色版都有,相差无几,大家自行选择。 首先双击运行Dev-C++软件,第一步,点击File – New – Project 在新打开的窗口中根据自己的需要如点击Console Application(控制台程序),再选择C++ project 之后点击确定 下一步选个地方,起个项目名 然后就可...

He_YI的博客 2万+
上一篇: C++入门教程:第三篇 - 控制结构、函数与数组
下一篇: C++入门教程:第五篇 - 模板编程基础
HYP_Coder
博客等级 码龄2年 1696粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值