美文网首页
C++ 面向对象程序设计 总结

C++ 面向对象程序设计 总结

作者: linanwx | 来源:发表于2017-12-14 13:53 被阅读0次

前言

C++与C最大的不同是面向对象。虽然我了解一些有关面向对象的概念,写过一些函数,可惜实际中很少用到。本文是C++ Primer第15章的快速总结。

概述

面向对象程序设计又称为OOP,其核心思想是:数据抽象、继承和动态绑定。数据抽象指的是,声明与实现分离,继承指的是子类获得父类的所有成员,动态绑定是调用类的函数时根据类的不同进行区别调用。

声明基类与派生类

下面的代码进行简单的示例,声明了一个基类animal与派生类cat。

#include <stdio.h>
#include <iostream>

class animal
{
  public:
    virtual void eat(){};
};

class cat : public animal
{
  public:
    void eat() { std::cout << "eat fish" << std::endl; }
};

int main()
{
    cat c;
    c.eat();
}

类型转换与继承

派生类的指针和引用可以转为基类的指针或引用,基类的指针或引用不能转化为派生类的指针或引用。这意味着,一个基类的指针,指向的对象,有可能是基类,也有可能是派生类,但肯定不是基类的父类。

派生类对象可以赋值给基类,但只会拷贝基类的部分。

虚函数

虚函数在运行时进行解析。我们继续上面的例子,假如我们写了一个新的函数,是doeat,内部调用了animal的eat方法。eat对animal是eat meat or grass,但是最后显示的结果是eat fish。这就证明了,在运行时,doeat函数调用animal的eat方法时,eat方法找到了引用对象的真实对象cat的eat方法并进行了调用。

class animal
{
  public:
    virtual void eat() { std::cout << "eat meat or grass" << std::endl; };
};

class cat : public animal
{
  public:
    void eat() { std::cout << "eat fish" << std::endl; }
};

void doeat(animal &a) { a.eat(); }

int main()
{
    cat c;
    doeat(c);
}

另外,为了养成良好的习惯,在派生类中最好使用override来显式的声明覆盖的虚函数。

纯虚函数

在定义虚函数后赋值为0则声明了纯虚函数,纯虚函数相当于接口,派生类必须实现该接口。

抽象基类

含有纯虚函数的类是抽象基类。抽象基类不能创建。

示例 文本行查询程序

给定一段文本,要求查询其中的内容。支持单词查询、逻辑查询。

相关文章

  • C++ — 类 & 对象超详解

    C++ 类 & 对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ ...

  • 2019-04-04 C++学习笔记之类和对象(上)

    参考资料:《21天学通C++》、《C++语言程序设计(第4版)》 面向对象程序设计的基本特点 抽象 面向对象方法中...

  • CPP基础:面向对象编程

    面向对象编程 类 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核...

  • [GeekBand] C++面向对象程序设计-1

    从基于对象(Object Based)过渡到面向对象(Object Oriented)是 C++ 面向对象程序设计...

  • cpp面向对象

    面向对象编程 [TOC] 类 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 ...

  • C++ 类 & 对象

    原文地址:C++ 类 & 对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是...

  • C++零基础教程之类和对象初识

    C++ 类和对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核...

  • C++面向对象

    C++类和对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心...

  • 1.2.01_C++ 类 & 对象

    C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计(Object Oriented Pr...

  • NDK开发—C++面向对象编程(四)

    类 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,用户定...

网友评论

      本文标题:C++ 面向对象程序设计 总结

      本文链接:https://www.haomeiwen.com/subject/mflzvxtx.html