-
C++ 输出字符串
所属栏目:[语言] 日期:2023-06-12 热度:8483
我们还需要输出指定的字符串,这时可以使用 ostream 类提供的 write() 成员方法。
write() 成员方法专用于向输出流缓冲区中添加指定的字符串,初学者可以简单的理解为输出指定的字符串。其语法格式如下:
ostrea[详细] -
C++ 输出单个字符
所属栏目:[语言] 日期:2023-06-12 热度:9691
通过前面的学习我们知道,C++ 程序中一般用 ostream 类的 cout 输出流对象和 << 输出运算符实现输出,并且 cout 输出流在内存中有相应的缓冲区。但有时用户还有特殊的输出需求,例如只输出一个字符,这种情况下可以借[详细]
-
C++输入流和输出流
所属栏目:[语言] 日期:2023-06-12 热度:2741
只要涉及输入或者输出数据,我们立马想到的就是 cin 和 cout。其实,cin 就是 istream 类的对象,cout 是 ostream 类的对象,它们都声明在 <iostream> 头文件中,这也解释了“为什么在 C++ 程序中引入 <iostrea[详细]
-
dynamic_cast 关键字
所属栏目:[语言] 日期:2023-06-12 热度:36
dynamic_cast 用于在类的继承层次之间进行类型转换,它既允许向上转型(Upcasting),也允许向下转型(Downcasting)。向上转型是无条件的,不会进行任何检测,所以都能成功;向下转型的前提必须是安全的,要借助 RT[详细]
-
reinterpret_cast 关键字
所属栏目:[语言] 日期:2023-06-12 热度:7288
reinterpret 是“重新解释”的意思,顾名思义,reinterpret_cast 这种转换仅仅是对二进制位的重新解释,不会借助已有的转换规则对数据进行调整,非常简单粗暴,所以风险很高。
reinterpret_cast 可以认[详细] -
const_cast 关键字
所属栏目:[语言] 日期:2023-06-12 热度:2740
const_cast 比较好理解,它用来去掉表达式的 const 修饰或 volatile 修饰。换句话说,const_cast 就是用来将 const/volatile 类型转换为非 const/volatile 类型。
下面我们以 const 为例来说明 const_cast 的用法[详细] -
C++ static_cast 关键字
所属栏目:[语言] 日期:2023-06-12 热度:6253
static_cast 只能用于良性转换,这样的转换风险较低,一般不会发生什么意外,例如:
原有的自动类型转换,例如 short 转 int、int 转 double、const 转非 const、向上转型等;
void 指针和具体类型指针之间的转换,[详细] -
C++类型转换函数
所属栏目:[语言] 日期:2023-06-12 热度:3355
C++ 提供了类型转换函数(Type conversion function)来解决这个问题。类型转换函数的作用就是将当前类类型转换为其它类型,它只能以成员函数的形式出现,也就是只能出现在类中。
类型转换函数的语法格式为:
op[详细] -
C++转换构造函数
所属栏目:[语言] 日期:2023-06-12 热度:1271
将其它类型转换为当前类类型需要借助转换构造函数(Conversion constructor)。转换构造函数也是一种构造函数,它遵循构造函数的一般规则。转换构造函数只有一个参数。
仍然以 Complex 类为例,我们为它添加转换构[详细] -
C++赋值运算符
所属栏目:[语言] 日期:2023-06-12 热度:5835
当以拷贝的方式初始化一个对象时,会调用拷贝构造函数;当给一个对象赋值时,会调用重载过的赋值运算符。
即使我们没有显式的重载赋值运算符,编译器也会以默认地方式重载它。默认重载的赋值运算符功能很简单,就[详细] -
C++拷贝构造函数分析
所属栏目:[语言] 日期:2023-06-08 热度:7086
在 C++ 中,拷贝并没有脱离它本来的含义,只是将这个含义进行了“特化”,是指用已经存在的对象创建出一个新的对象。从本质上讲,对象也是一份数据,因为它会占用内存。
严格来说,对象的创建包括两个阶[详细] -
C++ throw用作异常规范
所属栏目:[语言] 日期:2023-06-08 热度:9800
throw 关键字除了可以用在函数体中抛出异常,还可以用在函数头和函数体之间,指明当前函数能够抛出的异常类型,这称为异常规范(Exception specification),有些教程也称为异常指示符或异常列表。请看下面的例子:[详细]
-
C++抛出异常处理
所属栏目:[语言] 日期:2023-06-08 热度:9101
我们讲到了 C++ 异常处理的流程,具体为:抛出(Throw)--> 检测(Try) --> 捕获(Catch)
异常必须显式地抛出,才能被检测和捕获到;如果没有显式的抛出,即使有异常也检测不到。
在 C++ 中,我们使用 throw[详细] -
C++异常类型
所属栏目:[语言] 日期:2023-06-08 热度:367
exceptionType是异常类型,它指明了当前的 catch 可以处理什么类型的异常;variable是一个变量,用来接收异常信息。当程序抛出异常时,会创建一份数据,这份数据包含了错误信息,程序员可以根据这些信息来判断到底出[详细]
-
C++ 异常机制来捕获异常的方法
所属栏目:[语言] 日期:2023-06-08 热度:9241
我们可以借助 C++ 异常机制来捕获上面的异常,避免程序崩溃。捕获异常的语法为:
try{
// 可能抛出异常的语句
}catch(exceptionType variable){
// 处理异常的语句
}
try和catch都是 C++ 中的关键字[详细] -
C++异常处理
所属栏目:[语言] 日期:2023-06-08 热度:6205
程序的错误大致可以分为三种,分别是语法错误、逻辑错误和运行时错误:
1) 语法错误在编译和链接阶段就能发现,只有 100% 符合语法规则的代码才能生成可执行程序。语法错误是最容易发现、最容易定位、最容易排除的[详细] -
弱类型的语言
所属栏目:[语言] 日期:2023-06-08 热度:5683
弱类型语言在定义变量时不需要显式地指明数据类型,编译器(解释器)会根据赋给变量的数据自动推导出类型,并且可以赋给变量不同类型的数据。典型的弱类型语言有 JavaScript、Python、PHP、Ruby、Shell、Perl 等。[详细]
-
强类型语言
所属栏目:[语言] 日期:2023-06-08 热度:2087
强类型语言在定义变量时需要显式地指明数据类型,并且一旦为变量指明了某种数据类型,该变量以后就不能赋予其他类型的数据了,除非经过强制类型转换或隐式类型转换。典型的强类型语言有 C/C++、Java、C# 等。
下面[详细] -
C++运算符重载注意事项
所属栏目:[语言] 日期:2023-06-08 热度:1111
在 C++ 中进行运算符重载时,有以下问题需要注意:
重载后运算符的含义应该符合原有用法习惯。例如重载+运算符,完成的功能就应该类似于做加法,在重载的+运算符中做减法是不合适的。此外,重载应尽量保留运算符原[详细] -
C++强制类型转换运算符
所属栏目:[语言] 日期:2023-06-08 热度:3440
在 C++ 中,类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符。
类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数。经过适当重载后,(类型名)对象这[详细] -
C++重载new和delete运算符
所属栏目:[语言] 日期:2023-06-07 热度:9178
内存管理运算符 new、new[]、delete 和 delete[] 也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数。一般情况下,内建的内存管理运算符就够用了,只有在需要自己管理内存时才会重载。
以成员函[详细] -
C++重载自增和自减运算符
所属栏目:[语言] 日期:2023-06-07 热度:853
自增++和自减--都是一元运算符,它的前置形式和后置形式都可以被重载。请看下面的例子:
#include <iostream>
#include <iomanip>
using namespace std;
//秒表类
class stopwatch{
public:
stopwatch([详细] -
C++重载下标运算符
所属栏目:[语言] 日期:2023-06-07 热度:216
C++ 规定,下标运算符[ ]必须以成员函数的形式进行重载。该重载函数在类中的声明格式如下:
返回值类型 & operator[ ] (参数);
或者:
const 返回值类型 & operator[ ] (参数) const;
使用第一种声明方式,[[详细] -
C++重载输入和输出运算符
所属栏目:[语言] 日期:2023-06-07 热度:4107
在C++中,标准库本身已经对左移运算符<<和右移运算符>>分别进行了重载,使其能够用于不同数据的输入输出,但是输入输出的对象只能是 C++ 内置的数据类型(例如 bool、int、double 等)和标准库所包含的类类型(例如 [详细]
-
C++运算符重载时需要遵循的规则
所属栏目:[语言] 日期:2023-06-07 热度:8356
运算符重载是通过函数重载实现的,概念上大家都很容易理解,这节我们来说一下运算符重载的注意事项。
1) 并不是所有的运算符都可以重载。能够重载的运算符包括:
+ - * / % ^ & | ~ ! = < > += -=[详细]
