
C++
主要记录学习C++相关知识
Beymax大白
这个作者很懒,什么都没留下…
展开
-
C++类构造函数,作用域和静态成员
1.构造函数每个类分别定义来它的对象初始化方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫构造函数。构造函数的任务是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。构造函数的名字和类名相同。和其他函数不同的是,构造函数没有返回值;除此之外类似与其他函数,构造函数也有一个参数列表和一个函数体。类可以包含多个构造函数,和其他重载函数差不多,不同的构造函数之间必须在参数数量或参数类型上有所区别。不同与其他成员函数,构造函数不能被声明成const的。当我们创建类的原创 2020-09-29 00:43:32 · 637 阅读 · 0 评论 -
C++函数指针
函数指针指向的是函数而非对象,和其他指针一样。函数指针指向某种特定类型,函数的类型由它的返回类型和形参类型共同决定,与函数名无关:bool func(const string &, const string &); 该函数的类型是bool(const string &, const string &)。要想声明一个可以指向该函数的指针,只需要用指针替换函数名即可:bool (*pf)(const string &, const s原创 2020-09-07 20:57:51 · 230 阅读 · 0 评论 -
C++函数匹配
在大多数情况下我们都能确定某次调用应该选择哪个重载函数。然而当几个重载函数的形参数量相等,以及某些形参的类型可以由其他类型转换得来时,这项工作就不那么容易了。以下面这组函数及其调用为例:void f();void f(int);void f(int, int);void f(double, double=3.14);f(5.6);...原创 2020-09-04 22:35:59 · 1095 阅读 · 0 评论 -
C++默认实参、内联函数和constexpr函数
默认实参某些函数有这样一种形参,在函数的很多次调用中它们都被赋予一个相同的值,此时,我们把这个反复出现的值称为函数的默认实参。调用含有默认实参的函数时, 可以包含该实参,也可以省略该实参。默认实参声明对于函数的声明来说,通常的习惯是将其放在头文件中,并且一个函数只声明一次,但是多次声明一个函数也是合法的。有一点需要注意,在给定的作用域中一个形参只能被赋予依次默认实参。换句话说,函数的后续声明只能为之前那些没有默认值的形参添加默认实参,而且该形参右侧的所有形参必须都有默认值:string screen原创 2020-09-03 00:07:59 · 225 阅读 · 0 评论 -
C++函数重载
同一个作用域内的几个函数名字相同但形参列表不同,我们称之为函数重载。对于重载函数来说,它们应该在形参数量或形参类型上有所不同。不允许两个函数除了返回类型外,其他所有的要素都相同。判断两个形参的类型是否相同Record lookup(const Accout &acct);Record lookup(const Accout &); //错误,形参的名字仅仅起到记忆的作用,它并不影响形参列表的内容,所以两个函数是相同的typedef Phone Telno;Reco原创 2020-09-01 00:43:42 · 270 阅读 · 0 评论 -
C++返回类型
不要返回局部对象的引用或指针函数完成后,它所占用的存储空间也随之释放掉。因此,函数终止意味着局部变量的引用将指向不再有效的区域。此时如果使用局部对象的引用或指针将发生未定义行为。引用返回左值函数的返回类型决定函数是否是左值。调用一个返回引用的函数得到左值,其他返回类型得到右值。可以像使用其他左值那样来使用返回引用的函数的调用,特别是我们可以为返回类型是非常量引用的函数的结果赋值,如果返回值是常量引用,则不能赋值:char &get_val(string &str, string::s原创 2020-08-26 00:15:09 · 2299 阅读 · 0 评论 -
C++参数传递
每次调用函数都会重新创建它的形参,并用传入的实参对形参进行初始化。初始化的机理与变量初始化一样。1.传值参数当初始化一个非引用类型的变量时,初始值被拷贝给变量,此时变量的改动不会影响初始值。传值参数的机理完全一样,函数对形参做的所有操作都不会影响实参。指针形参指针的行为和其他非引用类型一样,当执行指针拷贝操作时,拷贝的是指针的值。拷贝之后,两个指针是不同的指针。因为指针使我们可以间接地访问它所指的对象,所以通过指针可以修改它所指对象的值。指针形参的行为与之类似:void func(int *ip)原创 2020-08-25 14:28:32 · 817 阅读 · 0 评论 -
C++类型转换
在C++中,某些类型之间有关联,如果两种类型有关联,那么当程序需要其中一种运算对象的时候,可以用另外一种关联类型的对象或值替代。换句话说,如果两种类型可以相互转换,那么它们就是关联的。 自动执行,无需程序员介入,有时甚至不需要了解的转换称为隐式转换,比如整型和浮点数相加,如果返回值是整型,则会自动把浮点数转换成整型数。何时发生隐式类型转换:在大多数表达式中,比int类型小的整型首先提升为较大的整型数。在条件中,非布尔值转换成布尔类型。初始化过程中,初始值转换成变量的类原创 2020-08-20 23:17:34 · 227 阅读 · 0 评论 -
C++字符串、向量和数组4--数组
数组是一种类似于标准库vector的数据结构,与vector相同的是,数组也是存放类型相同的对象的容器,这些对象本身没有名字,需要通过其所在位置访问。与vector不同的是,数组的大小确定不变,不能随意向数组中增加元素。因为数组的大小固定,因此对于某些特殊的应用程序来说程序的运行时性能较好,但是相应的也损失了一些灵活性。1.定义和初始化内置数组 数组的声明形式如a[d],其中a是数组的名字,d是数组的维度。维度说明了数组的个数,因此必须大于0,必须是一个常量表达式。uns原创 2020-08-18 00:10:13 · 254 阅读 · 0 评论 -
C++字符串、向量和数组3--迭代器
我们已经知道可以使用下标运算符来访问string对象的字符或者vector对象的元素,还有另外一种方法也可以实现同样的目的,那就是迭代器。和指针类似,迭代器提供了对对象的间接访问,其对象是容器中的元素。1.使用迭代器 和指针不同的是,获取迭代器不是使用取地址符,有迭代器的类型同时拥有返回迭代器的成员:auto b = v.begin(), e = v.end(); begin成员负责返回指向第一个元素的迭代器,end成员负责返回指向容器尾元素的下一位置的原创 2020-08-16 21:24:16 · 260 阅读 · 0 评论 -
C++字符串、向量和数组2-- 标准库类型vector
标准库vector表示对象的集合,其中所有对象的类型都相同。集合中的每个对象都有一个与之对应的索引,索引用于访问对象,vector也叫容器。 C++既有类模板,也有函数模板,vector属于类模板。对于类模板来说,我们通过提供一些额外信息来指定模板到底实例化成什么样的类。以vector为例,提供的额外信息是vector内所存放对象的类型:vector<int> ivec; //ivec保存int类型的对象vector<Person>原创 2020-08-16 19:55:37 · 254 阅读 · 0 评论 -
C++字符串、向量和数组1-- 标准库类型string
标准库类型string表示可变长的字符序列,使用string必须包含头文件string文件。作为标准库一部分,string定义在命名空间std中。#include <string>using std::string; C++标准一方面对库的类型所提供的操作做来详细规定,另一方面也对库的实现者提出来性能原创 2020-08-16 13:24:25 · 300 阅读 · 0 评论 -
C++变量和基本类型5--处理类型
1.类型别名类型别名是一个名字,它是某种类型的同义词。使用类型别名有很多好处,它让复杂的类型名字变简单了、易于理解和使用,还有助于程序员清楚知道使用该类型的真实目的。有两种方法可用于定义类型别名,传统的方法是使用关键字typedef:typedef double wages; //wages是double的同义词typedef wages bass, *p //base是double的同义词,p是double *的同义词新标准规定了一种新的方法,使用别名声明来定义类型别名:using SI =原创 2020-08-15 21:20:52 · 273 阅读 · 0 评论 -
C++变量和基本类型4--const限定符
const说明有时候我们希望定义这样一种变量,它的值不能被改变。为了满足这一要求,可以使用关键字const对变量的类型加以限定:const int i =0;i =10; //错误,试图向const对象写值因为const对象一旦创建后其值就不能再改变,所以const对象必须初始化,初始值可以是任意复杂的表达式。const int i = get_size(); //正确:运行时初始化const int j = 42; //正确:编译时初始化const int k; //错误,k是一个原创 2020-08-15 19:44:48 · 354 阅读 · 0 评论 -
C++变量和基本类型3--复合类型
复合类型是指基于其他类型定义的类型,C++有几种复合类型,本章主要介绍引用和指针。1.引用引用为对象起了另一个名字,引用类型引用另外一种类型。通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量。int i=1024;int &iref = i;//iref是i的引用int &iref2; //错误,引用必须初始化一般在初始化时,初始化值会被拷贝都新建对象中。然而定义引用时,程序把引用和它的初始化值绑定在一起,而不是将初始化值拷贝给引用。一旦引用初始化完成,引用原创 2020-08-14 23:54:00 · 367 阅读 · 0 评论 -
C++变量和基本类型2--变量
变量提供一个具有名的、可供程序操作的存储空间。C++中的每个变量都有其数据类型,数据类型决定着变量所占的空间大小和布局方式、该空间能存储的值的范围,以及变量能参与的运算。对于C++程序员来说,“变量”和“对象”一般可以互换使用。1.变量的定义变量定义的基本形式是:首先是类型说明符,随后紧跟一个或多个变量名组成的列表,其中变量名以逗号分开,最后以分好结束。列表中的每个变量名的类型都由类型说明符决定,定义时还可以为一个或多个变量赋初值。int a=0,b,c=a;std::string s("1234"原创 2020-08-13 09:13:52 · 227 阅读 · 0 评论 -
C++变量和基本类型1 -- 基本内置类型
C++基础1 – 变量和基本类型原创 2020-08-11 23:14:58 · 262 阅读 · 0 评论