![](https://img-blog.csdnimg.cn/direct/7012b532c6f646358365f82a64650a48.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++
文章平均质量分 94
C++(c plus plus)是一种计算机高级程序设计语言,由C语言扩展升级而产生 [17],最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。
觉醒法师
勤学习、干实事。
展开
-
C++面向对象程序设计 - 函数库
在C语言的传统方法中,头文件名包括后缀.h,如stdio.h,math.h等。由于C语言没有命名空间,头文件并不存放在命名空间中,因此在C++程序文件中如果用到带后缀.h的头文件时,不必用命名空间,只需在文件中包含所用的头文件即可。C语言程序中各种功能基本上都是由函数来实现的,在C语言的发展过程中建立了功能丰富的函数库,C++从C语言继承了些函数功能。如果要用函数库中的函数,就必须在程序文件中包含文件中有关的头文件,在不同的头文件中,包含了不同的函数的声明。原创 2024-06-15 12:37:52 · 303 阅读 · 0 评论 -
C++面向对象程序设计 - 命名空间
在C语言中定义了三个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内的。在不同的作用域中可以定义相同名字的变量,互不干扰,系统能够区别它们。命名空间是ANSI C++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。原创 2024-06-14 17:05:02 · 684 阅读 · 0 评论 -
C++面向对象程序设计 - 异常处理
程序中常见的错误有两大类:语法错误和运行错误。在编译时,编译系统能发现程序中的语法错误(如关键字拼写错误,变量名未定义,语句末尾缺分号,括号不配对等),编译系统会告知用户在第几行出错。由于是在编译阶段发现的错误,因此这类也称为编译错误。在C++发展后期,加了一些功能,作为工具来使用,其中主要有模板(包括函数模板和类模板)、异常处理、命名空间和运行时类型识别,以帮助程序设计人员更方便地进行程序设计和调试工作。原创 2024-06-11 11:53:30 · 874 阅读 · 0 评论 -
C++面向对象程序设计 - 输入输出流进一步研究
在C++中,输入输出流(I/O)是一个强大的特性,它允许程序与各种输入/输出设备(如键盘、显示器、文件等)进行交互。C++标准库中的头文件定义了基本的输入输出流类,如std::cin(用于输入)、std::cout(用于输出)和std::cerr(用于错误输出)。原创 2024-06-10 19:47:32 · 1314 阅读 · 0 评论 -
C++面向对象程序设计 - 字符串流
文件流是以外存文件为输入输出对象的数据流,字符串流不是以外存文件为输入输出的对象,而以内存中用户定义的字符数组(字符串)为输入输出的对象,即将数据输出到内存中的字符数组,或者从字符数组(字符串)将数据读入。字符串流也称为内存流。原创 2024-06-08 19:10:08 · 817 阅读 · 0 评论 -
C++面向对象程序设计 - 文件操作与文件流
在C++中,文件操作通常通过文件流(file streams)来完成,这是库提供的功能。fstream库中的三个主要类用于文件操作:ifstream(用于输入文件),ofstream(用于输出文件)和fstream(用于双向文件操作)。在实际应用中,常以磁盘文件作为对象,即能从磁盘文件读取数据,也能将数据输出到磁盘文件,磁盘是计算机的外部存储器,能够长期保留信息,能读能写,可以刷新重写等等。原创 2024-06-07 14:31:21 · 1211 阅读 · 0 评论 -
C++面向对象程序设计 - 标准输入流
C++中,头文件iostream.h中定义了cin,cout, cerr, clog等4个流对象,cin是输入流,cout, cerr, clog是输出流。cin是istream类的对象,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取符“>>”从流中提取数据。注意的是,在输入完成数据再按回车键后,该行数据才被送入键盘缓冲区,形成输入流,提取运算符“>>”才能从中提取数据。原创 2024-05-30 15:24:25 · 591 阅读 · 0 评论 -
C++面向对象程序设计 - 标准输出流
在C++中,标准输出流通常指的是与标准输出设备(通常是终端或控制台)相关联的流对象。这个流对象在C++标准库中被定义为std::cout、std::err、std::clog,它们是std::ostream类的一个实例。原创 2024-05-28 17:11:36 · 1135 阅读 · 0 评论 -
C++面向对象程序设计 - 输入和输出
这种输入输出称为标准输入输出,简称标准I/O。为了实现数据的有效流动,C++系统提供了庞大的I/O类库,调用不同的类去实现不同的功能。程序的输入指的是文件将数据传送给程序,程序的输出指的是从程序将数据传送输出文件。原创 2024-05-26 12:40:05 · 840 阅读 · 0 评论 -
C++面向对象程序设计 - 纯虚函数和抽象类
在C++中,纯虚函数(Pure Virtual Function)是一种特殊的虚函数,它在基类中被声明但没有定义。纯虚函数用于在基类中创建一个接口,要求所有派生类必须提供该函数的具体实现。纯虚函数通过在虚函数声明的末尾加 = 0 来标识。如果一个类包含一个或多个纯虚函数,那么这个类就被称为抽象类(Abstract Class)。抽象类不能被实例化(即创建对象),因为至少有一个成员函数(即纯虚函数)没有被实现。原创 2024-05-11 11:42:42 · 1045 阅读 · 0 评论 -
C++面向对象程序设计 - 虚函数
在C++中,虑函数(Virtual Function)是面向对象编程(OOP)中的一个重要概念,它允许派生类(或称为子类)覆盖基类(或称为父类)中的成员函数。当通过基类指针或引用调用一个虚函数时,如果指针或引用实际指向的是一个派生类对象,那么就会调用派生类的虚函数方法,而不是基类中的方法,这种机制被称为动态绑定或运行时绑定。原创 2024-05-10 10:21:20 · 1155 阅读 · 0 评论 -
C++面向对象程序设计 - 多态性
比如函数重载和运算符重载实现的多态性属于静态多态性,在程序编译时系统就能决定调用的是哪个函数,因此又称编译时的多态性;静态多态性是通过函数的重载实现的,运算符重载实质上也是函数重载。多态性是面向对象程序设计的一个重要特征,多态的意思是一个事物的多种形态。在C++程序设计中,多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数。面向对象方法中的多态性,比如说向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法)。原创 2024-05-08 23:24:08 · 1077 阅读 · 0 评论 -
C++面向对象程序设计 - 继承与派生进一步讨论
C++中所谓“继承”就是在一个已存在的类的基础上建立一个新类,从已有的类那里获得已有特性,叫做类的继承。从另一角度说,从已有的类(父类)产生一个新的子类,称为类的派生。一个派生类只从一个基类派生,这称为单继承;一个派生类有两个或多个基类,称为多继承。派生类是基类的具体化,而基类则是派生类的抽象。原创 2024-05-06 18:25:27 · 755 阅读 · 3 评论 -
C++面向对象程序设计 - 多继承,以及基类与派生类转换
单继承是一个类从另一个基类派生类而来的,多继承则是一个派生类是同两个或多个基类,派生类从两人或多个基类中继承所需的属性。原创 2024-04-28 22:27:05 · 877 阅读 · 0 评论 -
C++面向对象程序设计 - 派生类的构造函数和析构函数
构造函数的主要作用对数据成员初始化,基类的构造函数是不能被继承的,在声明派生类时,派生类并没有把类的构造函数继承下来。因此,对继承过来的基类成员初始化的工作也要由派生类的构造函数完成;所以在派生类中不仅要考虑自身增加的数据成员的初始化,还要考虑基类的数据成员的初始化。原创 2024-04-26 16:31:02 · 1062 阅读 · 0 评论 -
C++面向对象程序设计 - 继承与派生
C++中所谓“继承”就是在一个已存在的类的基础上建立一个新类,从已有的类那里获得已有特性,叫做类的继承。从另一角度说,从已有的类(父类)产生一个新的子类,称为类的派生。一个派生类只从一个基类派生,这称为单继承;一个派生类有两个或多个基类,称为多继承。派生类是基类的具体化,而基类则是派生类的抽象。面向对象技术强调软件的可重用性(software reusability),C++语言提供了类的继承机制,解决了软件重用问题。原创 2024-04-25 17:28:46 · 859 阅读 · 0 评论 -
C++面向对象程序设计 - 重载运算符进一步讨论
函数重载就是对一个已有的函数赋予新的含义,使之实现新的功能。因此一个函数名就可以用来代表不同功能的函数,也就是一名多用。运算符也可以重载,即运算符重载(operator overloading)。在C++中,我们可以通过重载运算符来使得自定义类型(比如复数类)可以像内置类型一样使用运算符。原创 2024-04-24 13:10:56 · 930 阅读 · 0 评论 -
C++面向对象程序设计 - 不同类型数据间的转换
在C++中,不同类型的数据之间有时需要进行转换,这些转换可以是隐式的,也可以是显式的。原创 2024-04-22 08:12:33 · 877 阅读 · 0 评论 -
C++面向对象程序设计 - 运算符重载
函数重载就是对一个已有的函数赋予新的含义,使之实现新的功能。因此一个函数名就可以用来代表不同功能的函数,也就是一名多用。运算符也可以重载,即运算符重载(operator overloading)。运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。运算符重载实质上是函数的重载。原创 2024-04-20 16:58:27 · 1347 阅读 · 0 评论 -
C++面向对象程序设计 - 类和对象进一步讨论
在C++中,关于面向对象程序设计已经讲了很大篇幅,也例举很多案例,此篇将通过一些习题来进一步了解对象、静态成员、指针、引用、友元、类模板等等相关知识。原创 2024-04-15 10:17:41 · 804 阅读 · 0 评论 -
C++面向对象程序设计 - 类模板
C++允许使用函数模板,对于功能相同而数据类型不同的一些函数,不必一一定义各个函数,可以定义一个可以对任何类型变量进行操作的函数模板,在调用函数时,系统会根据实参的类型,取代函数模板中的类型参数,得到具体函数。有时两个或多个类,其功能是相同的,仅仅是数据类型不同。显然这种重复性工作是不必要的,C++在发展后期增加了模板(template)的功能,提供了解决这类的途径;可以声明一个通用的类模板,它可以有一个或多个虚拟的类型参数,创建可以重用的组件,这些组件可以处理多种数据类型,而不仅仅是单一的数据类型。原创 2024-04-11 09:12:20 · 1332 阅读 · 0 评论 -
C++面向对象程序设计 - 静态成员、友元
在C++中,静态成员是类的一个特性,它们与类本身关联,而不是与类的任何特定对象关联;静态成员可以是数据成员(变量)或成员函数;静态成员在类的所有对象之间共享一个副本,这意味着无认创建多少个类实例,都只有一个静态成员副本存在。友元(friend)是一种特殊的声明,它允许一个函数或类访问另一个类的私有(private)和保护(protected)成员。友元不是类的成员,但它可以访问类的所有成员,包括私有和保护成员。使用友元的主要目的是为了允许在类外部的函数或类能够访问类的私有或保护成员,而不破坏封装性。原创 2024-04-10 09:28:06 · 631 阅读 · 0 评论 -
C++面向对象程序设计 - 对象的动态建立和释放、赋值和复制
在C++中,对象的动态建立和释放通过使用new和delete操作符来完成的,new用于在运行时动态分配内存以创建对象,而delete用于释放这些动态分配的内存。对象的赋值和复制是两个不同的概念,赋值是通过操作符“=”进行的;复制是构造函数来实现的。原创 2024-04-09 15:16:21 · 1086 阅读 · 0 评论 -
C++面向对象程序设计 - 共用数据的保护(常对象、常指针和常引用)
C++虽然采取了不少有效的措施(如设private保护)以增加数据的安全性,但是有些数据却往往是共享的,例如实参与形参,变量与其引用,数据与其指针等,人们可以在不同的场合通过不同的途径访问同一个数据对象。既要使数据能在一定范围内共享,又要保证它不被任意修改,这时可以使用const,即把有关数据定义为常量。这篇了解下常对象、常对象成员、对象的常指针、对象的常引用。原创 2024-04-07 20:41:50 · 786 阅读 · 0 评论 -
C++面向对象程序设计 - 对象指针和this指针
在C++学习中,指针是一个用于指向另一个变量的地址的变量。理解指针有一定难度,但是理解它的工作原理后,会发现它们是非常强大和有用的工具。指针可以用来指向一般的变量,也可以指向对象。在建立对象时,编译系统会为每一个对象分配一定的存储空间,以存放其成员。对象空间的起始地址就是对象的指针。原创 2024-04-06 17:11:35 · 1083 阅读 · 0 评论 -
C++面向对象程序设计 - 数组与sizeof、对象指针使用
在C++中,sizeof是一个运算符,用于获取特定类型或对象在内存中所占用的字节数。这个运算符在多种场景下都非常有用,包括内存管理、性能优化以及理解数据结构在内存中的布局。数组是一种可以存储多个同类型元素的线性数据结构。每个元素在数组中有一个唯一的索引,通常从0开始。数组提供了一种方便的方式来存储和处理一组相关的数据。在C++中,获取数组长度并不像获取其他数据类型的大小那样直接,因为数组本身并不包含其长度的信息。所以这篇讲解的是,如何结合sizeof获取数组的长度。并且通过对象指针,也可以获取数组长度。原创 2024-04-03 15:26:10 · 972 阅读 · 0 评论 -
C++面向对象程序设计 - 构造函数
C++提供了构造函数来处理对象的初始化,构造函数是一种特殊的成员函数,与其他成员函数不同,它不需要用户来调用,而是在建立对象时自动执行。构造函数名称必须与类同名,而不能由用户任意命名,以便编译系统能识别它把它作为构造函数处理。它不具体任何类型,也不返回任何值。构造函数的功能由用户定义,可根据初始化的要求设计函数体和函数参数。而且如果用户未定义构造函数,C++系统会自动生成一个构造函数,只是这个构造函数体是空的。原创 2024-04-02 18:08:48 · 1154 阅读 · 4 评论 -
C++面向对象程序设计 - 访问对象中成员的3种方法
在C++程序中访问对象的成员变量和成员函数,有三种方法:通过对象名和成员运算符访问对象中的成员;通过指向对象的指针访问对象中的成员;通过对象的引用变量访问对象中的成员。struct和class区别、类外定义成员函数、inline成员函数等.....原创 2024-04-01 12:50:02 · 1627 阅读 · 0 评论 -
C++程序变量的引用
在C++中,变量的“引用” 就是变量的别名,因此引用又称为别名。由于引用不是独立的变量,编译系统不给它单独分配存储单元,因此在建立引用时只有声明,没有定义,只是声明它和原有的某一变量的关系。原创 2024-03-22 17:20:38 · 748 阅读 · 0 评论 -
C++程序函数的重载和函数模板
在C++中,函数也可以重载。C++允许在同一作用域中用同一函数名定义多个函数,这些函数的参数个数和参数类型不相同,这些同名的函数用来实现不同的功能,这就是函数的重载。函数的重载的函数体是完全相同的,只是形参和类型不同,也要分别定义。为了解决这个问题,C++提供了函数模板(function template)。函数模板,实际上是建立一个通用函数类型和形参类型不具体指定,用一个虚拟的类型来代表,这个通用函数就称为函数模板。原创 2024-03-18 07:41:06 · 745 阅读 · 0 评论 -
C++面向对象程序设计 - 创建学生类
C++由AT&TBell实验室于20世纪80年代初在C语言的基础上开发成功,保留了C语言原有的所有优点,增加了面向对象的机制。如果你有Java、C#、PHP、NodeJs等语言基础,再来了解C++,会发现它们在面向对象编程方面有许多相似之处,有封装、继承、多态、类与对象、访问个修饰符等。[Error] invalid conversion from 'char*' to 'char' [-fpermissive]。[Error] 'setw' was not declared in this scope;原创 2024-03-17 15:37:02 · 1271 阅读 · 0 评论