-
C++输入流和输出流(超级详细)
所属栏目:[语言] 日期:2023-05-23 热度:6865
本教程一开始就提到,C++ 又可以称为“带类的 C”,即可以理解为 C++ 是 C 语言的基础上增加了面向对象(类和对象)。在此基础上,学过 C 语言的读者应该知道,它有一整套完成数据读写(I/O)的解决方案:[详细]
-
C++ static_cast、dynamic_cast、const_cast和reinterpret_cast(四种类型转换运算符)
所属栏目:[语言] 日期:2023-05-23 热度:8479
上节讲到,隐式类型转换是安全的,显式类型转换是有风险的,C语言之所以增加强制类型转换的语法,就是为了强调风险,让程序员意识到自己在做什么。
但是,这种强调风险的方式还是比较粗放,粒度比较大,它并没有表[详细] -
C++类型转换函数:将当前类的类型转换为其它类型
所属栏目:[语言] 日期:2023-05-23 热度:8958
转换构造函数能够将其它类型转换为当前类类型(例如将 double 类型转换为 Complex 类型),但是不能反过来将当前类类型转换为其它类型(例如将 Complex 类型转换为 double 类型)。
C++ 提供了类型转换函数(Type[详细] -
C++转换构造函数:将其它类型转换为当前类的类型
所属栏目:[语言] 日期:2023-05-23 热度:6681
在 C/C++ 中,不同的数据类型之间可以相互转换。无需用户指明如何转换的称为自动类型转换(隐式类型转换),需要用户显式地指明如何转换的称为强制类型转换。
自动类型转换示例:
int a = 6;
a = 7.5 + a;
编译[详细] -
C++重载=(赋值运算符)
所属栏目:[语言] 日期:2023-05-23 热度:7311
在《到底什么时候会调用拷贝构造函数?》一节中,我们讲解了初始化和赋值的区别:在定义的同时进行赋值叫做初始化(Initialization),定义完成以后再赋值(不管在定义的时候有没有赋值)就叫做赋值(Assignment)。[详细]
-
C++深拷贝和浅拷贝(深复制和浅复制)完全攻略
所属栏目:[语言] 日期:2023-05-23 热度:6214
对于基本类型的数据以及简单的对象,它们之间的拷贝非常简单,就是按位复制内存。例如:
class Base{
public:
Base(): m_a(0), m_b(0){ }
Base(int a, int b): m_a(a), m_b(b){ }
private:
int m_[详细] -
C++拷贝构造函数(复制构造函数)详解
所属栏目:[语言] 日期:2023-05-23 热度:3210
拷贝和复制是一个意思,对应的英文单词都是copy。对于计算机来说,拷贝是指用一份原有的、已经存在的数据创建出一份新的数据,最终的结果是多了一份相同的数据。例如,将 Word 文档拷贝到U盘去复印店打印,将 D 盘的[详细]
-
C++ exception类:C++标准异常的基类
所属栏目:[语言] 日期:2023-05-23 热度:9877
C++语言本身或者标准库抛出的异常都是 exception 的子类,称为标准异常(Standard Exception)。你可以通过下面的语句来捕获所有的标准异常:
try{
//可能抛出异常的语句
}catch(exception &e){
//处理异[详细] -
C++ throw(抛出异常)详解
所属栏目:[语言] 日期:2023-05-23 热度:2508
在《C++异常处理》一节中,我们讲到了 C++ 异常处理的流程,具体为:
抛出(Throw)--> 检测(Try) --> 捕获(Catch)
异常必须显式地抛出,才能被检测和捕获到;如果没有显式的抛出,即使有异常也检测不到。[详细] -
C++重载[](下标运算符)详解
所属栏目:[语言] 日期:2023-05-23 热度:9066
C++ 规定,下标运算符[ ]必须以成员函数的形式进行重载。该重载函数在类中的声明格式如下:
返回值类型 & operator[ ] (参数);
或者:
const 返回值类型 & operator[ ] (参数) const;
使用第一种声明方式,[[详细] -
常见的C++异常类型以及多级catch匹配
所属栏目:[语言] 日期:2023-05-23 热度:9481
首先来回顾一下上节讲到的 try-catch 的用法:
try{
// 可能抛出异常的语句
}catch(exceptionType variable){
// 处理异常的语句
}
我们还遗留下一个问题,就是 catch 关键字后边的exceptionType va[详细] -
C++异常处理技术基础,C++ try catch入门
所属栏目:[语言] 日期:2023-05-23 热度:560
开发程序是一项“烧脑”的工作,程序员不但要经过长期的知识学习和思维训练,还要做到一丝不苟,注意每一个细节和边界。即使这样,也不能防止程序出错。
专家指出,长期作息不规律 + 用脑过度的危害很大,[详细] -
了解大话C++模板编程的来龙去脉
所属栏目:[语言] 日期:2023-05-23 热度:5969
计算机编程语言种类繁多,目前能够查询到的有 600 多种,常用的不超过 20 种,TIOBE 每个月都会发布世界编程语言排行榜,统计前 50 名编程语言的市场份额以及它们的变动趋势。该榜单反映了编程语言的热门程度,程序员[详细]
-
C++类模板5分钟学习教程
所属栏目:[语言] 日期:2023-05-23 热度:2189
C++ 除了支持函数模板,还支持类模板(Class Template)。函数模板中定义的类型参数可以用在函数声明和函数定义中,类模板中定义的类型参数可以用在类声明和类实现中。类模板的目的同样是将数据的类型参数化。
声[详细] -
简化C++函数模板5分钟入门教程
所属栏目:[语言] 日期:2023-05-23 热度:7271
在《C++函数重载》一节中,为了交换不同类型的变量的值,我们通过函数重载定义了四个名字相同、参数列表不同的函数,如下所示:
//交换 int 变量的值
void Swap(int *a, int *b){
int temp = *a;
*a = *[详细] -
C++运算符重载注意事项以及归纳
所属栏目:[语言] 日期:2023-05-23 热度:6161
在 C++ 中,类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符。
类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数。经过适当重载后,(类型名)对象这[详细] -
C++重载()(强制类型变换运算符)
所属栏目:[语言] 日期:2023-05-23 热度:7409
在 C++ 中,类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符。
类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数。经过适当重载后,(类型名)对象[详细] -
C++重载new与delete运算符详解
所属栏目:[语言] 日期:2023-05-23 热度:6049
内存管理运算符 new、new[]、delete 和 delete[] 也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数。一般情况下,内建的内存管理运算符就够用了,只有在需要自己管理内存时才会重载。
以成员函[详细] -
C++重载++和--(自增和自减运算符)具体解析
所属栏目:[语言] 日期:2023-05-23 热度:5498
自增++和自减--都是一元运算符,它的前置形式和后置形式都可以被重载。请看下面的例子:
#include <iostream>
#include <iomanip>
using namespace std;
//秒表类
class stopwatch{
public:
stopwatch():[详细] -
C++多继承(多重继承)技术解析
所属栏目:[语言] 日期:2023-05-22 热度:1319
在前面的例子中,派生类都只有一个基类,称为单继承(Single Inheritance)。除此之外,C++也支持多继承(Multiple Inheritance),即一个派生类可以有两个或多个基类。
多继承容易让代码逻辑复杂、思路混乱,一直备[详细] -
C++基类和派生类的析构函数
所属栏目:[语言] 日期:2023-05-22 热度:3726
和构造函数类似,析构函数也不能被继承。与构造函数不同的是,在派生类的析构函数中不用显式地调用基类的析构函数,因为每个类只有一个析构函数,编译器知道如何选择,无需程序员干涉。
另外析构函数的执行顺序和[详细] -
C++基类和派生类的构造函数
所属栏目:[语言] 日期:2023-05-22 热度:2988
前面我们说基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承。构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成[详细]
-
C++继承时的名字掩盖问题
所属栏目:[语言] 日期:2023-05-22 热度:7268
如果派生类中的成员(包括成员变量和成员函数)和基类中的成员重名,那么就会遮蔽从基类继承过来的成员。所谓遮蔽,就是在派生类中使用该成员(包括在定义派生类时使用,也包括通过派生类对象访问该成员)时,实际上[详细]
-
C++三种继承方法
所属栏目:[语言] 日期:2023-05-22 热度:108
C++继承的一般语法为:
class 派生类名:[继承方式] 基类名{
派生类新增加的成员
};
继承方式限定了基类成员在派生类中的访问权限,包括 public(公有的)、private(私有的)和 protected(受保护的)。[详细] -
C++继承和派生基础教程
所属栏目:[语言] 日期:2023-05-22 热度:9467
C++ 中的继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产。
继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于[详细]
