C++关于指针,继承和多态介绍

yizhihongxing

C++关于指针、继承和多态介绍

指针

在C++中,指针是一种保存其他变量内存地址的变量。使用指针可以传递地址而不是传递变量值。

指针的定义和使用

指针的定义方式:数据类型 *指针名称 = &变量名称;,其中“*”表示声明一个指针变量,&表示取变量地址。

int num = 10;
int *pNum = # // 定义指向num变量的指针

指针的使用方式:通过指针访问变量。

cout << *pNum << endl; // 输出num的值

指针的运算

指针可以进行四种基本运算:加上一个整数、减去一个整数、两个指针相减、比较两个指针。

int arr[5] = {1, 2, 3, 4, 5};
int *pArr = arr;
pArr += 2; // pArr指向arr[2]
cout << *pArr << endl; // 输出arr[2]的值

继承

在C++中,继承是一种代码复用机制,允许一个类继承另一个类的属性和方法。继承的类称为派生类,被继承的类称为基类。

继承的类型

C++中有三种继承方式:公有继承、私有继承、保护继承。

  • 公有继承:派生类和外部代码可以访问基类的公有成员。
  • 私有继承:派生类可以访问基类的公有和私有成员,但外部代码无法访问。
  • 保护继承:派生类可以访问基类的公有和保护成员,外部代码无法访问。

继承的语法

继承是通过在派生类中使用“:”符号来实现的。

class 基类 {
public:
    int a;
    void funcA();
};

class 派生类 : public 基类 { // 公有继承基类
public:
    int b;
    void funcB();
};

多重继承

多重继承是指派生类同时从两个或两个以上的基类继承属性和方法。C++支持多重继承,但需要避免菱形继承问题。

多态

在C++中,多态允许不同类的对象使用相同的方法名称,但实现不同的方法行为。多态有两种实现方式:虚函数和纯虚函数。

虚函数

在基类中声明虚函数,然后在派生类中重写该函数,从而实现多态特性。

class Animal {
public:
    virtual void sound() {
        cout << "This is an animal." << endl;
    }
};

class Dog : public Animal {
public:
    void sound() {
        cout << "Bark!" << endl;
    }
};

纯虚函数

纯虚函数是在基类中声明但不实现的虚函数,这样派生类必须实现该函数才能实例化。

class Shape {
public:
    virtual double getArea() = 0; // 纯虚函数
};

class Square : public Shape {
public:
    double getArea() {
        return width * width;
    }
private:
    double width;
};

示例

指针示例

int num1 = 10, num2 = 20;
int *pNum1 = &num1, *pNum2 = &num2;

*pNum1 = *pNum1 * 2;
*pNum2 += *pNum1;

cout << num1 << endl; // 输出20
cout << num2 << endl; // 输出40

继承和多态示例

class Shape {
public:
    virtual double getArea() = 0; // 纯虚函数
};

class Square : public Shape {
public:
    Square(double w) : width(w) {}
    double getArea() {
        return width * width;
    }
private:
    double width;
};

class Circle : public Shape {
public:
    Circle(double r) : radius(r) {}
    double getArea() {
        return 3.14 * radius * radius;
    }
private:
    double radius;
};

int main() {
    Shape *pShape;
    Square sq(2.0);
    Circle cr(3.0);

    pShape = &sq;
    cout << "Square area: " << pShape->getArea() << endl;

    pShape = &cr;
    cout << "Circle area: " << pShape->getArea() << endl;

    return 0;
}

输出:

Square area: 4
Circle area: 28.26

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++关于指针,继承和多态介绍 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • mybatis笔记

    以下是“MyBatis笔记的完整攻略”的详细说明,包括过程中的两个示例说明。 MyBatis笔记的完整攻略 MyBatis是一款优秀的持久层框架,它可以帮助我们简化数据库操作。在使用MyBatis时,我们可以使用XML或注解来配置SQL语句。以下是一份关于MyBatis笔记的完整攻略。 1. MyBatis基础知识 在开始使用MyBatis之前,我们需要掌握…

    other 2023年5月10日
    00
  • Java数据结构之查找

    这里是Java数据结构中查找的完整攻略。 1. 什么是查找? 在计算机科学中,查找是指在数据集合中寻找一个特定的项目,通常是为了确认其存在或位置。在Java中,常用的查找算法有线性查找、二分查找、哈希表等。 2. 线性查找 线性查找是一种简单的顺序查找方法,从第一个元素开始逐一比较,直到找到目标元素或遍历完整个数据集合。 线性查找的Java代码实现: pub…

    other 2023年6月27日
    00
  • 浅谈PHP无限极分类原理

    浅谈PHP无限极分类原理 什么是无限极分类 无限极分类是指一个分类的层级数不确定,随着数据的增加,分类的层级数可能会不断增加。类似于“树”的结构,每个分类可以有多个子分类,每个子分类又可以有多个孙分类,一直延伸下去,直到最后一层分类。 实现无限极分类 实现无限极分类的方法主要有两种: 递归算法 递归算法是指在函数内部调用自身的一种算法。在实现无限极分类的时候…

    other 2023年6月27日
    00
  • vue如何根据不同的环境使用不同的接口地址

    Vue可以通过配置不同的环境变量来实现在不同的环境下使用不同的接口地址。以下是实现的步骤: 1. 创建环境变量配置文件 在Vue项目根目录下创建.env文件,以及.env.development、.env.production等与环境对应的文件。其中,.env是默认的环境配置文件,.env.production文件适用于生产环境,.env.developme…

    other 2023年6月27日
    00
  • asp.net三种方法实现事务

    ASP.NET是一种基于Microsoft .NET框架的Web应用程序开发技术。在ASP.NET中,事务是一种用于确保数据一致性和完整性的重要机制。本文将详细讲解ASP.NET中三种方法实现事务的完整攻略,并提供两个示例说明。 三种方法 在ASP.NET中,实现事务的三种方法分别是:ADO.NET事务、Enterprise Services事务和Trans…

    other 2023年5月5日
    00
  • iOS 14.5/iPadOS 14.5(18E5186a)开发者预览版/公测版 Beta 5正式发布(附下载)

    iOS 14.5/iPadOS 14.5(18E5186a)开发者预览版/公测版 Beta 5正式发布(附下载)攻略 iOS 14.5/iPadOS 14.5(18E5186a)开发者预览版/公测版 Beta 5已经正式发布,本篇文章将为您提供完整的攻略,包括如何下载和安装该版本,并为您展示该版本的主要新功能和改进内容。 下载和安装 注册为苹果开发者或者参加…

    other 2023年6月26日
    00
  • C++ list-map链表与映射表的简单使用

    C++ list-map链表与映射表的简单使用 在C++编程中,链表与映射表都是常用的数据结构之一,对于常见的数据处理和算法实现难度降低起到了不可忽视的作用。本文将为大家详细讲解C++中list与map的链表与映射表的简单使用方法。 C++ list链表的简单使用 概述 链表是一种常用的数据结构,与数组不同的是,链表中的存储单位是结构体,在每个结构体中有一个…

    other 2023年6月27日
    00
  • python-使用np.searchsorted查找最新时间戳

    以下是关于“Python使用np.searchsorted查找最新时间戳”的完整攻略,包括np.searchsorted的基本知识、使用方法和两个示例等。 np.searchsorted的基本知识 np.searchsorted是NumPy中的一个函数,用于在已排序的数组中查找指定值的插入位置。它可以用于查找最新时间戳等用场景。 np.searchsorte…

    other 2023年5月7日
    00
合作推广
合作推广
分享本页
返回顶部