首页
学习
活动
专区
工具
TVP
发布

适合具备 C 语言基础的 C++ 教程(九)

前言 在上一则教程中,叙述了关于C++类型转换的相关内容,在本节教程中,将叙述 C++的另一个内容,也就是抽象,这也是 C++相对于 C语言来说独特的一点,下面我们就来着重叙述这一点。...多文件编程 在前面的教程中,有一则教程说到了多文件编程,在 C++中也就是将类的声明放到头文件中,将类的实现放在.cpp文件中,为了更好地阐述这种方法,我们用实例来进行讲解,首先,来看一下,所涉及到地所有文件有哪些...e.eating(); c.eating(); return 0; } 在前面的教程中,我们就说过,如果是多文件的话,需要编写 Makefile文件,Makefile文件代码如下...test_eating()函数,根据传入的参数不同执行不同的eating函数,说到这里,实际上是跟前面一则教程中所将的抽象类和虚函数概念所结合起来的,因此,这里也是采用相同的思路,将 Human类设置为抽象类...小结 上述便是本期教程的所有内容,教程所涉及的代码可以通过百度云链接的方式获取。

38620
您找到你想要的搜索结果了吗?
是的
没有找到

适合具备 C 语言基础的 C++ 教程(十二)

引言 在前面的教程中,叙述了模板函数以及模板类的相关概念,在本节教程中,笔者将着重叙述 C++中的异常机制,所谓异常,是程序在执行期间产生的问题,异常提供一种转移程序控制权的方式。...异常的引入 为什么要引入异常这个机制呢,假设有如下一个调用关系: A ----> B ----> C 那如果说是,C函数中出现了一个问题,那要将这个问题找到,就需要在 C函数里返回一个值,然后根据这个值一级一级地向上处理...C 3、捕捉到异常怎么处理?...<<"call C ..."...上述中,我们讲述了异常处理机制时在扔出各个类型的异常时的处理方法,在整个C++教程中,贯穿始终的一直是类这个概念,那么对于C++来说,抛出异常的时候可以抛出类异常么,答案是可以的。

36010

适合具备 C 语言基础的 C++ 教程(七)

前言 在前面的教程中,阐述了继承的相关内容,其中就包括继承之后数据成员的访问控制以及多重继承,虚拟继承等内容,本节的内容即将阐述另外一个面向对象的特性:多态,多态是面向对象编程三大特性之一。...,我们来编写main函数,主函数代码如下所示: int main(int argc,char **argv) { Human h; Englishman e; Chinese c;...test_eating(h); test_eating(e); test_eating(c); return 0; } 按照常规思路,在调用 test_eating...image-20210220103645630 可见代码的运行结果并不是如我们所想的一样,那这是为什么呢,这就要提到前面一则教程中所讲的派生类的空间分布,也正是因为这个原因,导致代码的运行结果如上图所示...)<<endl; cout<<"sizeof(Englishman) = "<<sizeof(e)<<endl; cout<<"sizeof(Chinese) = "<<sizeof(<em>c</em>)

43410

适合具备 C 语言基础的 C++ 教程(四)

前言 在上一则教程中,我们讲述了重载运算符中前 ++和后++的重载函数的实现,阐述了在 C++中可以将运算符进行重载的方法,这种方法大大地便利了程序员编写代码,在接下来地叙述中,我们将着重讲述运算符重载时地一些更为细致地内容...紧接着,我们知道我们在使用 C++进行编码的时候,基本不会再采用 C语言中的语法 printf这个语句,随之替代的是 cout这个语句,我们也知道我们使用 cout进行输出的时候,往往采用的是下面这样的输出方式...类实现运算符重载函数 在上述代码中我们实现的 +运算符重载函数以及前 ++运算符重载函数和后++运算符重载函数,都是在类外实现的,那么如果要在类实现以上几个运算符重载函数,应该如何写呢,我们先回顾一下...,到本期教程截至,C++相对于 C语言不同的一些语法特性就到此结束了。...下期教程将介绍 C++如何实现面向对象的方法。本期教程所涉及到的代码可以通过百度云链接的方式获取到。

43420

适合具备 C 语言基础的 C++ 教程(十)

前言 在上一则教程中,叙述了抽象类以及动态链接库的相关内容,本节来叙述一下抽象类界面的相关内容,以及本节即将引入一个新的概念,模板。 抽象类界面 何为抽象类界面呢?...要说清楚这个概念,需要回顾上一则教程中所述的类编程和应用编程两个概念,为了实现应用编程和类编程,引入了动态链接库的概念,要达到的效果就是当更改类的代码的时候,而不更改应用程序的代码的时候,只需要重新生成动态链接库...Human* h[2] = {&e, &c}; int i; for (i = 0; i < 2; i++) test_eating(h[i]);...模板 在C++中的模板定义中,模板有两类,一个是函数模板,一个是类模板,在本节的教程中,主要是讲述函数模板的相关内容。...image-20210224145329671 注:cout<<__PRETTY_FUNCTION__<<endl 可以在函数模板打印匹配结果 根据打印出来的匹配结果,可以看到mymax匹配的T是数组类型

69220

适合具备 C 语言基础的 C++ 教程(六)

前言 在上一则教程中,着重讲述了派生类继承于父类之后的一些访问控制,在本次教程中,将介绍如下几个点:派生类扩展父类功能,派生类的空间分布,以及多重继承的相关概念。...那我们现在有一个派生类从这两个基类继承而来,代码如下所示: class Sofabed : public Sofa, public Bed { }; 既然是从两个基类中继承而来,自然也就满足在之前的教程里所述的访问控制的原则...再论构造函数的调用顺序 在前面的教程中,已经多次提及了构造函数的执行顺序,接下来也有必要就此问题继续谈一下当存在多重继承时,以及存在虚拟继承时,这个时候构造函数的调用顺序又是怎么样的?...{ public: Vertification3C() { cout <<"Vertification3C()"<<endl; } }; 由上述框图可以知道,Sofa和Bed都是虚拟继承自Furniture...和Vertication3C,那么代码实现如下所示: class Sofa : virtual public Furniture , virtual public Vertification3C { private

26510

适合具备 C 语言基础的 C++ 教程(十四)

前言 在上一则教程中,我们引入了智能指针的相关概念,并详细地说明了智能指针的用法,而且我们也对智能指针进行了一些完善,使其更加具备普适性,在前一则教程中,我们也提到了说虽然已经完善了很多,但是仍然存在着问题...我们本节教程将着重叙述这个内容。...在阅读本则教程之前需要阅读上一则教程:适合具备 C 语言基础的 C++ 教程(十三) 多线程下存在的问题 在讲述多线程下存在的问题之前,我们需要了解一下在一个系统中,当要对一个变量进行操作的时候,需要经历哪些步骤...我们来回忆一下上一则教程中智能指针的内容,为了防止在使用智能指针时,多个指针指向同一个对象,导致的多次释放同一块内存区域的问题。...小结 本次的分享主要是对上节内容的一个补充,其中提及到了原子操作以及轻量级指针的概念,笔者关于C++教程是在学习韦东山老师的C++时的一个总结与记录,本人也并不会Android开发。

36620

适合具备 C 语言基础的 C++ 教程(二)

前言 在上一则教程中,通过与 C 语言相比较引出了 C++ 的相关特性,其中就包括函数重载,引用,this 指针,以及在脱离 IDE 编写 C++ 程序时,所要用到的 Makefile的相关语法。...本节所要叙述的是 C++的另外两个重要的特性,也就是构造函数和析构函数的相关内容,这两部分内容也是有别于 c语言而存在的,也是 c++的一个重要特性。...而这个操作, C++ 提供了析构函数来完成,下面是使用析构函数来进行释放内存的代码: #include #include #include <unistd.h...小结 上述便是关于 C++比较核心的两个概念,构造函数以及析构函数两大特性,除了讲述了两大特性的基本概念之外,也叙述了为什么要适用析构函数,以及析构函数调用的位置,同时也叙述了拷贝构造函数的相关内容。

30420

适合具备 C 语言基础的 C++ 教程(八)

前言 在前一则教程中,我们阐述了多态的相关概念,其中就包括实现多态所必须的虚函数,以及使用多态这个性质时一些限制的内容,本节教程将着重讲解 C++中的类型转换问题,其中就包括:dynamic_cast、...C语言的类型转换 隐式类型转换 我们在使用C语言进行编程的时候,时常会涉及到类型转换的问题,我们首先就隐式的类型转换进行阐述,话不多说,我们来看一段代码: #include int...强制转换 那么要如何消除这些警告呢,这个时候,就需要使用显示转换,在 C语言中也被称之为是强制转换,代码如下所示: #include int main(int argc, char...C++ 的类型转换 本节的核心内容还是讲解 C++的,上述中的 C语言部分是为了引出C++的强制转换,在上述中,我们提及了 C语言的隐式转换和强制转换,实际上在 C++中也有与之对应的内容,在 C++中跟强制转换效果一样的便是...,在 C++中,我们使用 dynamic_cast来实现这个功能。

38520

适合具备 C 语言基础的 C++ 教程(五)

前言 在上述教程中,我们已经完成了 C++相对于 C语言来说独特的语法部分,在接下来的教程中,我们将叙述 C++中面向对象的语法特性。...image-20210209204824118 那么上图所示的抽象出数据成员以及成员函数具体的含义是什么呢,正如前面教程所述,在前面的教程里,我们选用一个 Person类来作为例子进行讲解,其中这个类里我们有...name以及age,这个也就是我们抽象出来的数据,那抽象出来的成员函数也就是前面教程讲到的setName()和setAge()函数,在设计这个类的时候,会把这个类的一些成员设置为私有的或者公有的,这也就是访问控制...; m--; setMoney(m); } }; 上述定义了两个类,一个是 Father类,一个是 Son类,Son类继承于 Father类,这两个类用通俗的语言进行解释便是...getMoney(); m--; setMoney(m); room_key = 1; } }; 上述代码中,我们可以看到在 public的作用域

46920

C++C 语言C++ 语言的关系 ( C 语言发展 | C 语言缺陷 | C 语言 + 面向对象 + 高级语言特性 | C++ 语言增加内容 | C 语言C++ 语言应用场景 )

语言 , 如 : Objective-C , 主要用于 Mac 软件和 iPhone / iPad 软件开发 ; C++ , 用途广泛 , Windows / Linux 都可以使用 C++ 语言 ;...2、C 语言C++ 语言关系 C 语言C++ 语言 并 不是 竞争关系 ; C++ 语言 是 以 C 语言为基础 的 加强版本编程语言 , 可以看作是更好的 C 语言 , 在 C++ 语言...中 , 可以使用 C 语言语法 , 对 C 语言完全兼容 ; C++ 语言 包含 C 语言 , 在 C++ 代码中可以使用 C 语言的语法 , 但是在 C 语言中不能使用 C++ 的语法 ; 3、C++...语言增加内容 C++ 语言C 语言基础上 : 增加了 面向对象 支持 ; 进行了 类型加强 ; 进行了 函数加强 ; 增加了 异常处理机制 ; 增加了 STL 特性 ; 4、C 语言C++...语言应用场景 C 语言C++ 语言的应用场景 : C语言 应用场景 : 系统软件、操作系统、编译器等 底层系统级应用 ; C++ 语言 应用场景 : 大型应用程序、游戏 等更 高级的应用 ; 在不同的

21520

C++语言

一、C++语言简介 C++语言是一种混合了C语言和面向对象编程语言特性的通用编程语言。它继承了C语言的语法和底层访问能力,同时增加了许多新的特性,例如类、对象、函数重载、模板等。...这些特性使得C++语言更加适合开发大型软件系统。...二、C++语言的作用 C++语言在许多领域都有着广泛的应用,以下是其主要作用: 系统级编程:C++语言可以用于开发操作系统、嵌入式系统、驱动程序等需要直接与硬件交互的系统级软件。...C++语言的高性能和灵活性使得它成为了科学计算领域的常用语言之一。...总之,C++语言是一种功能强大的编程语言,它既可以用于系统级编程也可以用于应用程序开发等多个领域。掌握好C++技巧可以提高程序的效率、可读性和安全性。

6110

c++教程

C++ 教程C++ 是一种高级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。...C++ 可运行于多种平台上,如 Windows、MAC 操作系统以及 UNIX 的各种版本。本教程通过通俗易懂的语言来讲解 C++ 编程语言。现在开始学习 C++ 编程!...C++ 在线工具谁适合阅读本教程?本教程是专门为初学者打造的,帮助他们理解与 C++ 编程语言相关的基础到高级的概念。...阅读本教程前,您需要了解的知识:在您开始练习本教程中所给出的各种实例之前,您需要对计算机程序和计算机程序设计语言有基本的了解。...编译/执行 C++ 程序实例#include using namespace std;int main(){ cout << "Hello, world!"

52720

C++ 语言CC++ 兼容 ( extern C )

; ② 兼容 : 如果在 C++ 文件中调用 C 语言库 , 需要做兼容处理 ; ③ 示例 : 在 Android 中的 NDK 接口是 C++ 语言的 , 但是调用的库 如 OpenSL ES ,...FFMPEG 等都是 C语言的库 , 因此这里就需要用到 CC++ 的兼容 ; ④ 兼容方法 : 使用 extern “C”{} 指定让大括号中的内容 以 C 语言的方式进行编译 ; 这样才能在...宏 : 该宏定义在 C++ 编译器中 , 如果是 C 语言编译器 , 就不会定义该宏 ; ② 使用效果 : 如果在 C++ 编译环境中 , extern “C” { 和 } 生效 , 在 C 语言编译环境中..., 不生效 ; #pragma once //兼容 CC ++ 语言 , 在 C++ 中也可以编译 C 语言程序 // __cplusplus 是编译器中定义的 宏 //如果编译的是 C+...4.c_extern.h : #pragma once //兼容 CC ++ 语言 , 在 C++ 中也可以编译 C 语言程序 // __cplusplus 是编译器中定义的 宏 //如果编译的是

2.6K30

适合具备 C 语言基础的 C++ 入门教程(九)

前言 在上一则教程中,叙述了关于C++类型转换的相关内容,在本节教程中,将叙述 C++的另一个内容,也就是抽象,这也是 C++相对于 C语言来说独特的一点,下面我们就来着重叙述这一点。...多文件编程 在前面的教程中,有一则教程说到了多文件编程,在 C++中也就是将类的声明放到头文件中,将类的实现放在.cpp文件中,为了更好地阐述这种方法,我们用实例来进行讲解,首先,来看一下,所涉及到地所有文件有哪些...e.eating(); c.eating(); return 0; } 在前面的教程中,我们就说过,如果是多文件的话,需要编写 Makefile文件,Makefile文件代码如下: Human...test_eating()函数,根据传入的参数不同执行不同的eating函数,说到这里,实际上是跟前面一则教程中所将的抽象类和虚函数概念所结合起来的,因此,这里也是采用相同的思路,将 Human类设置为抽象类...小结 上述便是本期教程的所有内容,教程所涉及的代码可以通过百度云链接的方式获取。

39610
领券