C++
文章平均质量分 73
东南亚季风
很菜的学生一枚
展开
-
C++随笔(三)
一、转换函数(conversion function)“转出去”使用operator double() const {…}的格式可实现将Fraction对象转换为double值,同理也可以转换为想要的类型,具体在该函数中实现。“转进来”若构造函数使用explicit关键字,则该构造函数只能用于构造对象,即其它值对象类型不能自动转换为Fraction类型。如下:二、pointer-like classes(指针类)智能指针对于传统的指针,我们可以使用两个操作符,即*解引用操作符,->原创 2021-02-27 19:51:48 · 285 阅读 · 1 评论 -
C++随笔(二)
操作符重载分类:类成员操作符重载:只有在左操作数是该类类型的对象时,才会考虑使用作为类成员的重载操作符非类成员操作符重载:对于需要两个操作数的操作符重载,我们就可以定义两个参数作用:如果要定义一个函数,而这个函数的功能与操作符的功能比较类似时,这个时候我们就可以定义重载操作符,而不使用通常的成员函数定义。声明:同普通函数类似,只不过它的名字包括关键字operator,以及紧随其后的一个预定义操作符。complex& operator += (const complex&);原创 2021-02-19 20:40:09 · 250 阅读 · 1 评论 -
C++随笔(一)
头文件防卫式声明防止头文件重复包含方式一:#ifndef __SOMEFILE_H__#define __SOMEFILE_H__ ... ... // 声明、定义语句#endif方式二:pragma once //防止头文件重复包含头文件的布局#ifndef HEAD_H#define HEAD_H#include <cmath>//******* forward declarations ******* class ostream;cla原创 2021-02-18 17:46:45 · 191 阅读 · 1 评论 -
智能指针
一、简介动态内存:除了静态内存和栈内存,每个程序还拥有一个内存池。这部分内存被称作自由空间(free store)或堆(heap)。程序用堆来存储动态分配(dynamicallyallocate)的对象——即那些在程序运行时分配的对象。动态对象的生存期由程序来控制,也就是说,当动态对象不再使用时,我们的代码必须显式地销毁它们。虽然使用动态内存有时是必要的,但正确地管理动态内存是非常棘手的。**智能指针存在的原因:**动态内存的使用很容易出问题,因为确保在正确的时间释放内存是极其困难的。有时我们会忘记释原创 2021-02-05 17:46:52 · 529 阅读 · 0 评论 -
面向对象的特性——封装、继承、多态
封装定义:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。目的:增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。作用:降低耦合。基本要求:私有成员是在封装体内被隐藏的部分,只有类的成员函数才可以访问私有成员,而在类体外的函数时不能访问的;公有成员是封装体与外界的一个接口,类体外的函数可以访问公有成员;保护成员是只有该类的成员函数和该类的派生类才可以访问的。封装性实际上是由编译器去识别关键字public、pri原创 2021-02-03 19:07:48 · 127 阅读 · 0 评论 -
pair(对组)的使用
pair译为对组,可以将两个值视为一个单元。pair<T1,T2>存放的两个值的类型,可以不一样,如T1为int,T2为float。T1,T2也可以是自定义类型。pair.first是pair里面的第一个值,是T1类型。pair.second是pair里面的第二个值,是T2类型。 //构造方法 pair<int, int> pair1(10, 20); cout << pair1.first << " " << pair1.second原创 2021-01-26 18:51:31 · 556 阅读 · 0 评论 -
C++文件输入输出
文件流类和文件流对象输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的。在实际应用中,常以磁盘文件作为对象。即从磁盘文件读取数据,将数据输出到磁盘文件。和文件有关系的输入输出类主要在fstream.h这个头文件中被定义,在这个头文件中主要被定义了三个类,由这三个类控制对文件的各种输入输出操 作,他们分别是ifstream、ofstream、fstream,其中fstream类是由iostream类派生而来,他们之间的继承关系见下图所示。由于文件设备并不像显示器屏幕与键盘那样是原创 2021-01-21 19:46:58 · 1705 阅读 · 0 评论 -
C++:标准I/O流
标准I/O对象:cin,cout,cerr,clogcout; //全局流对象 输出数据到显示器cin; //cerr没有缓冲区 clog有缓冲区cerr; //标准错误 输出数据到显示器clog; //标准日志 输出数据到显示器一、标准输入流cin.get()//一次只能读取一个字符 char ch; while ((ch = cin.get()) != EOF){//EOF就是键盘Ctrl+z,常被作为结束的标志 cout << ch &l原创 2021-01-21 19:39:40 · 184 阅读 · 1 评论 -
C++:I/O流的概念和流类库的结构
一、C++输入输出包含以下三个方面的内容:对系统指定的标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。以外存磁盘文件为对象进行输入和输出,即从磁盘文件输入数据,数据输出到磁盘文件。以外存文件为对象的输入输出称为文件的输入输出,简称文件I/O。对内存中指定的空间进行输入和输出。通常指定一个字符数组作为存储空间(实际上可以利用该空间存储任何信息)。这种输入和输出称为字符串输入输出,简称串I/O。二、C++的I/O对C的发展–类型安全和可扩展性原创 2021-01-21 17:31:16 · 305 阅读 · 0 评论 -
C++ 异常机制(下)
C++ 异常机制(上)文章目录八、C++标准异常类九、编写自己的异常类十、继承在异常中的应用八、C++标准异常类C++标准库异常类继承层次中的根类为exception,其定义在exception头文件中,它是C++标准库所有函数抛出异常的基类,exception的接口定义如下:namespace std { class exception { public: exception() throw(); //不抛出任何异常 exce.原创 2021-01-16 18:05:47 · 248 阅读 · 1 评论 -
C++ 异常机制(上)
文章目录一、概念二、异常的好处三、基本语法四、栈解旋五、异常接口声明六、异常对象的内存模型七、异常对象的生命周期一、概念异常:存在于运行时的反常行为,这些行为超过了函数的正常的功能范围。异常处理:处理程序中的错误,异常处理机制为程序中异常检测和异常处理这两部分的协作提供支持。在C++中,异常处理包括:throw表达式,表示遇到了无法处理的问题try语句块,处理异常;以关键字try开始,一个或多个catch结束一套异常类,用于在throw表达式和相关的catch子句之间传递异常的信息。二、原创 2021-01-16 18:01:54 · 258 阅读 · 0 评论 -
C/C++编译过程
原创 2020-12-30 16:46:10 · 91 阅读 · 0 评论 -
MyArray框架搭建与实现
#include<iostream>using namespace std;template<class T>class MyArray{public: //构造函数 MyArray<T>(int capacity) { this->setmCapacity(capacity); //this->mCapacity = capacity mCapacity是public才这样用 this->mSize = 0;原创 2020-12-30 16:43:47 · 278 阅读 · 0 评论 -
类型转换(C++)
一、简介类型转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。二、C++强制类型转换C风格的强制转换不安全。C++强制类型转换:在C++语言中新增了四个关键字static_cast、const_cast、reinterpret_cast和dynamic_cast。这四个关键字都是用于强制类型转换的。新类型的强制转换可以提供更好的控制强制转换过程,允许控制各种不同种类的强制转换。C++中风格是static_cast(content)。C++风格的强制转换其他的好处是,它们能原创 2020-12-30 16:41:09 · 155 阅读 · 0 评论 -
三目运算符(C++)
一、简介固定格式 ?:三目运算符: 可用于赋值语句三目运算表达式:<表达式1>?<表达式2>:<表达式3>注:”?”运算符的含义是: 先求表达式1的值,如果为真,则执行表达式2,并返回表达式2的结果 ; 如果表达式1的值为假,则执行表达式3 ,并返回表达式3的结果。二、三目运算符的应用赋值: 三目运算符实现的条件判断:条件成立赋左值,条件不成立赋右值 int a=10, b=20, z; z = (a>b) ? a : b;//条件成立赋原创 2020-12-14 09:51:55 · 719 阅读 · 0 评论