首页 > 编程语言 >C++ 中类的三大特性是什么?

C++ 中类的三大特性是什么?

时间:2024-11-04 19:47:24浏览次数:3  
标签:函数 子类 代码 多态 C++ 三大 print 父类 中类

封装:

封装是将数据和操作数据的方法捆绑在一起,形成一个类。通过封装,类的内部实现细节被隐藏起来,只对外提供公共的接口。这样做有以下几个好处:

  • 数据安全性:封装可以防止外部代码直接访问和修改类的内部数据,只能通过类提供的方法进行操作。这样可以保证数据的安全性和完整性,避免因外部代码的错误操作而导致数据损坏。
  • 代码可维护性:如果类的内部实现需要修改,只需要修改类的内部代码,而不会影响外部代码的使用。这样可以提高代码的可维护性,降低维护成本。
  • 信息隐藏:封装可以将类的实现细节隐藏起来,只对外提供必要的信息。这样可以降低代码的耦合度,提高代码的可重用性。

在 C++ 中,可以通过访问限定符(public、private、protected)来实现封装。private 成员只能在类的内部访问,protected 成员只能在类的内部和子类中访问,public 成员可以在任何地方访问。

继承:

继承是一种代码复用的机制,允许一个类(子类)继承另一个类(父类)的属性和方法。继承有以下几个特点:

  • 代码复用:子类可以继承父类的属性和方法,避免了重复编写代码,提高了开发效率。
  • 代码扩展:子类可以在继承父类的基础上,添加新的属性和方法,实现对父类的扩展。
  • 多态性:继承是多态的基础,通过继承和重写父类的方法,可以实现多态性。
  • 继承权限会缩小父类中的成员在子类中的权限,不会扩大成员的权限
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
class father
{

private:
    int pri;
protected:
    int pro;
public:
    int pub;
};


class son : public father  
{
    void fun()
    {
        //pri = 1; //因为 pri在father中是私有的所以不能再子类中访问
        pro = 1;
        pub = 1;
    }
};

多态

多态是指同一个操作作用于不同的对象可以有不同的表现形式。在 C++ 中,多态主要通过虚函数来实现。多态有以下几个优点:

  • 提高代码的可扩展性和可维护性:当需要增加新的对象类型时,只需要为新的对象类型实现相应的虚函数,而不需要修改已有的代码。这样可以提高代码的可扩展性和可维护性。
  • 实现代码的灵活性:通过多态,可以根据不同的对象类型自动选择合适的操作,提高了代码的灵活性。
  • 实现接口的统一:多态可以使不同的对象类型具有相同的接口,方便代码的调用和管理。

在 C++ 中,使用虚函数来实现多态。虚函数是在基类中用virtual关键字声明的函数,在派生类中可以重写虚函数。当使用基类指针或引用调用虚函数时,实际调用的是派生类中重写的虚函数。

#include<iostream>
using namespace std;
class Base {
public:
    virtual void print() {
        cout << "Base class" << endl;
    }
};

class Derived : public Base {
public:
    void print()  {
        cout << "Derived class" << endl;
    }
};
int main() {
    Base* basePtr = new Derived();
    basePtr->print();
    delete basePtr;
    return 0;
}

Base类中的print函数是虚函数,Derived类重写了print函数。在main函数中,使用基类指针basePtr指向派生类对象,调用print函数时,实际调用的是派生类中的print函数,输出 “Derived class”。

标签:函数,子类,代码,多态,C++,三大,print,父类,中类
From: https://blog.csdn.net/m0_73949707/article/details/143492601

相关文章

  • 算法|牛客网华为机试31-40C++
    牛客网华为机试上篇:算法|牛客网华为机试21-30C++文章目录HJ31单词倒排HJ32密码截取HJ33整数与IP地址间的转换HJ34图片整理HJ35蛇形矩阵HJ36字符串加密HJ37统计每个月兔子的总数HJ38求小球落地5次后所经历的路程和第5次反弹的高度HJ39判断两个IP是否属于同一子......
  • C++程序设计笔记:终止程序函数abort与exit 20241104
    在C++中,abort()和exit()都是用来终止程序执行的函数,但它们的用途和行为有所不同。abort()函数abort()函数是定义在<cstdlib>或<stdlib.h>头文件中的,它用于异常终止程序。当调用abort()时,程序会立即停止执行,并且会进行堆栈展开(unwind),以调用所有已注册的析构函数和清理......
  • C/C++ stackful 有栈协同程式的一些缺点。
    在阅读本文之前,可以先查阅本人以下其它文章:C++20标准协同程序(协程)基于编译器展开的stackless协程。_协同编译具体-CSDN博客C/C++如何正确的切换协同程序?(基于协程的并行架构)_c++怎么切换运行程序-CSDN博客 关于Go协同程序(Coroutines协程)、Go汇编及一些注意事项。_go......
  • C++语言的起源。哪些程序是C++编写的?为什么早期VC++对ANSI C89之后的标准支持不好?
    C++语言的起源C++最初被称为带类的C,兼容C的语法,此既是C++得以流行的前提,也是C++某些语法被捆绑的根源。C++的++来源于C语言的递增运算符,代表增加,意义为扩展。BjarneStroustrup博士在做博士论文写代码的时候,遇到一些困难,发现Simu......
  • 【C++】reference to ‘prev‘ is ambiguous:std 命名空间冲突引发的编译错误
    问题描述C++代码编译错误:usingnamespacestd;usingll=longlong;constintN=1e6+7;llprev[N];原因分析在C++的标准库中,std命名空间包含一个名为std::prev的函数,该函数用于获取容器中的前一个迭代器。在上述代码中,通过usingnamespacestd;语句,所......
  • 【C&C++】C4996 ‘fopen‘: This function or variable may be unsafe. Consider usin
    问题描述在使用VisualStudio编译运行C/C++程序时,编译器返回警告信息。FILE*file;file=fopen("file.csv","w+");编译器返回的警告信息如下:C4996 'fopen':Thisfunctionorvariablemaybeunsafe.Considerusingfopen_sinstead.Todisabledeprecation,......
  • 【C++练习】判断成绩是否恰好有一门不及格
    题目:判断成绩是否恰好有一门不及格描述:编写一个程序,输入学生的语文和数学成绩,判断该学生是否恰好有一门课不及格(不及格的标准是成绩低于60分)。如果恰好有一门课不及格,则输出1;如果没有课程不及格或者两门课都不及格,则输出0。输入:输入两个整数,分别表示语文成绩和数学成绩。......
  • 【C++练习】收集瓶盖赢大奖
    题目:收集瓶盖赢大奖描述:某饮料公司最近推出了一个“收集瓶盖赢大奖”的活动:如果你拥有10个印有“幸运”、或20个印有“鼓励”的瓶盖,就可以兑换一个神秘大奖。现分别给出你拥有的印有“幸运”和“鼓励”的瓶盖数,判断是否可以去兑换大奖。输入:一行,包含两个整数,分别是印有“......
  • C和C++介绍
    C语言介绍C语言是一种通用的高级编程语言,由DennisRitchie在1972年开发。它以其高效性和灵活性广泛应用于系统编程和嵌入式系统。C语言提供了对底层内存的直接访问能力,支持过程化编程,并且具有丰富的标准库。C语言版本及内存管理特性版本发布年份新特性/改进内存......
  • APP获取用户的三大法则
    APP内容,提升APP吸引力和用户留存率A.用户研究深化1.**深入用户行为分析**:  -用户使用路径分析  -用户行为模式识别  -用户流失点分析2.**定性研究与定量研究结合**:  -进行深度访谈和焦点小组讨论  -利用数据分析用户行为3.**场景化研究**: ......