首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【笔记】《C++Primer》—— 第四部分:高级主题(完)

的类型,可以简单地保存类型不同的数量任意的对象,定义在头文件tuple中 用tuple来定义一个tuple,然后必须使用直接初始化法,对象参数可以输入对应类型需要放入的成员...和getline最大的区别是get会将分隔符保留为流的下一个字符,getline则读取并抛弃分隔符 18 用于大型程序的工具 异常处理的流程是:在C++中我们throw了一个表达式后会rised...,因此最好我们调用基类函数时也要特指 可以将某个类在继承的时候声明为虚基类,方法是在继承的派生列表中对应项前面加上virtual,这样处理后无论这个目标类被间接继承多少次,这个基类成员都只会出现一次,此时的派生称为虚派生...*fun)(10); 成员指针的一大用处是存放为函数表 嵌套类的特点是其名字在外层类之外就不可见了,需要用作用域符来访问 嵌套类和外层类之间没有权限特权,完全可以当作一个独立的类使用 在嵌套类的外层类完成真正的定义之前...局部类是定义在函数内部的类,局部类的定义只在定义它的作用域中可见 局部类的特点是其所有成员都必须在类内完成定义 同样局部类和函数之间没有权限特权 局部类内的嵌套类本质也属于一个局部类,所以嵌套类自身的成员必须定义在嵌套类内部

91310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    腾讯C++后台开发面试笔试知识点参考笔记

    笔记是基础C++知识点总结,没有过多的阐述后台开发的系统架构和分布式后台服务设计相关,还有c++11新特性,这些笔试面试也会被问到但不在这篇讨论范围,可以关注我后面有时间再补上。...2、硬链接ln源文件目标文件,没有参数-s, 会在选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。...只有成员函数中的代码才应该使用作用域操作符覆盖虚函数机制。 为什么会希望覆盖虚函数机制?最常见的理由是为了派生类虚函数调用基类中的版本。...一般我们并不关心是哪个实际类包含成员,通常只在基类和派生类共享同一名字时才需要注意。 与基类成员同名的派生类成员将屏蔽对基类成员的直接访问。...a.成员函数被重载的特征: (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。

    1K10

    C++:IO流

    为了兼顾自定义类型;一是因为C++是面向对象的,所以设计一套操作简单的输入输出流是合理的,二是因为在C++中因为类的出现,有时候为了方便输出类的成员变量,会对插入流进行重载;原来的printf无法对自定义类型合适的匹配...在使用时候必须要包含文件并引入 std 标准命名空间。 注意: 1. cin 为缓冲流。 键盘输入的数据保存在缓冲区中,当要提取时,是从缓冲区中拿 。...,每次输入提取后都会清空;也就是变量默认值是0; 提取失败的话,变量的值就是0; 如果为了保证每次读取整形成功,那就可以使用cin.get()把字符去掉,否则字符会一直在缓冲区,影响后面的输入; if...使用文件流对象的成员函数打开一个磁盘文件,使得文件流对象和磁盘文件之间建立联系 3. 使用提取和插入运算符对文件进行读写操作,或使用成员函数进行读写 4....使用 sprintf() 函数 但是两个函数在转化时,都得 需要先给出保存结果的空间 ,那空间要给多大呢,就不太好界定, 而且 转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃 。

    5300

    c++中istream类的超详细说明

    根据前文,istream类是c++标准输入流的一个基类,本篇详细介绍istream类的主要成员函数用法。...另外需要注意的是istream类的拷贝构造函数和赋值函数也都是保护类型的,所以istream是不允许拷贝或者赋值的,所以它也不能直接作为返回类型和参数传递,很多时候需要使用引用来进行传递。...3.get函数 istream头文件中截取get函数声明,如下: //从输入流中读取一个字符(包括空白字符)并返回,若遇到结束符则返回eof() int_type get...& __c); //从输入流中读取字符存储在__s指向的内存中,直到输入流被读取完或者读到了__n-1个字符才返回,其中如果在读取字符的过程中遇到了__delim所代表的字符,则提前返回,也就是说...//从输入流中读取字符存储在__s指向的内存中,直到输入流被读取完或者读到了__n-1个字符才返回,其中如果遇到换行符,则提前返回,从实现看,可见就是上面那个函数的终止字符是换行符

    1.5K30

    Java基础常见英语词汇

    Set and String Problems 集合与串的问题 Set Cover 集合覆盖 Set Packing 集合配置 String Matching 模式匹配 Approximate String...Capacity 容量,生产量 Contains 包含,容纳 InsertElementAt 插入元素在某一位置 io->in out 输入/输出 File 文件 isFile 是文件 isDirectory...文件输入流 FileOutputStream文件输出流 IOException 输入输出异常 fileobject 文件对象 available 可获取的 BufferedReader 缓冲区读取 FileReader...member access operator 成员取用运算子(有dot和arrow两种) member function 成员函数 member initialization list成员初始值列表...operator) candidate function 候选函式 候选函数 (在函式多载决议程序中出现的候选函式) chain 串链(例 chain of function calls) 链 character

    1.5K70

    【C++课程学习】:C++中的IO流(istream,iostream,fstream,sstream)

    1.C语言中的流 1.1控制台IO: 控制台(console)流有printf,scanf scanf 从标准输入设备读取数据,放到变量中 printf 向标准输出设备中输出数据 1.2输入,输出缓冲区...当eofbit,failbit,badbit没有被设置的时候,goodbit被设置。 2.3当出现类型不匹配出现输入流fail错误时,怎么处理?...3.空格和换行可以作为数据之间的区分标志。 4.内置类型库中已经重载了,如果自定义类型要想使用,要重载operatoroperator>>。...3.4istream作为逻辑判断真假 我们在连续输入的时候,cin>>n放在while里面,但是operator >>函数返回的istream&,istream为什么能作为真假进行判断呢?...2.使用提取和插入运算符对文件进行读写操作,或使用成员函数进行读。 3.关闭文件。 5.stringstream流 这个流的主要用途是,把一系列的类型,转换为字符串。

    14510

    两万字总结《C++ Primer》要点

    类一般不定义在函数体内,为了确保各个文件中类的定义一致,类通常被定义在头文件中,而且类所在头文件的名字应该与类的名字一样。 头文件通常包含那些被定义一次的实体。...一旦我们定义了一些其他的构造函数,除非我们再定义一个默认的构造函数,否则类将没有默认构造函数 ::: 7.2 访问控制与封装 (1)访问控制 说明符 用途 public 使用public定义的成员,在整个程序内可被访问...(1)重载成员变量 Screen myScrren; char ch = myScreen.get(); ch = myScreen.get(0,0); (2)类数据成员的初始化 类内初始值必须使用=...(2)使用类的静态成员 double r; r = Account::rate(); 小结 类有两项基本能力: 一是数据数据抽象,即定义数据成员和函数成员的能力; 二是封装,即保护类的成员不被随意访问的能力...8.2 文件输入输出 类 作用 ifstream 从一个给定文件读取数据 ofstream 从一个给定文件写入数据 fstream 读写给定文件 8.3 string流 类 作用 istringstream

    2.1K30

    两万字总结《C++ Primer》要点

    类一般不定义在函数体内,为了确保各个文件中类的定义一致,类通常被定义在头文件中,而且类所在头文件的名字应该与类的名字一样。 头文件通常包含那些被定义一次的实体。...一旦我们定义了一些其他的构造函数,除非我们再定义一个默认的构造函数,否则类将没有默认构造函数 ::: 7.2 访问控制与封装 (1)访问控制 说明符 用途 public 使用public定义的成员,在整个程序内可被访问...(1)重载成员变量 Screen myScrren; char ch = myScreen.get(); ch = myScreen.get(0,0); (2)类数据成员的初始化 类内初始值必须使用=...(2)使用类的静态成员 double r; r = Account::rate(); 小结 类有两项基本能力: 一是数据数据抽象,即定义数据成员和函数成员的能力; 二是封装,即保护类的成员不被随意访问的能力...8.2 文件输入输出 类 作用 ifstream 从一个给定文件读取数据 ofstream 从一个给定文件写入数据 fstream 读写给定文件 8.3 string流 类 作用 istringstream

    1.8K20

    STL之关联式容器map(二)

    emplace_hint() 的返回值不是一个 pair 对象,如果新元素被插入,它返回的是指向新元素的迭代器;如果没有插入,返回的是和这个键匹配的现有元素的迭代器。...它可以在其他一些场景下使用,例如输入流 //第一个版本接收一个字符串常量参数,然后把它传给 vector 的成员函数 emplace_back(), //...当在函数体中通过名称使用右值引用时,它会变成左值,因此必须使用 move() //函数将它变为右值,然后把它传给 vector 的成员函数 push_back()。...\n"; else std:: cout second << std::endl; 如果没有和参数匹配的元素,find()函数会返回容器的结束迭代器...6删除元素 map 的成员函数 erase() 可以移除键和参数匹配的元素,然后返回所移除元素的个数。

    56620

    C++的输入输出特点、运算符重载及标准模板库STL

    (namespace)std,std是名空间的名字,这是C++为了解决不同工程的变量,函数,类等命名冲突的问题,引入的名空间(namespace)的概念,相当于文件夹的目录和子文件的关系——不同的目录(...使用方法: ch=cin.get() 或 cin.get(ch) cin.get(数组名,长度,结束符): 结束符为可选参数,读入的字符个数最多为长度-1个,结束符规定结束字符串读取的字符,默认为...这样,您就能使用自定义类型的运算符。重载的运算符是带有特殊名称的函数,函数名是由关键字operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。...2.2.1实现一个操作符重载的方式通常分为两种情况: 将操作符重载实现为类的成员函数; 操作符重载实现为非类的成员函数(即全局函数)。...2.2.1.1将操作符重载实现为类的成员函数 在类体中声明(定义)需要重载的操作符,声明方式跟普通的成员函数一样,只不过操作符重载函数的名字是“关键字 operator +以及紧跟其后的一个C++预定义的操作符

    80420

    C++ Primer Plus习题及答案-第十一章

    一般来说,访问私有成员的唯一方法是使用类方法,c++使用友元函数来避开这种限制,要让函数成为友元,需在类声明中声明该函数,并在声明前加上关键字friend。...运算符函数可以是类成员函数,也可以是友元函数(有一些运算符函数只能是类成员函数),如果要使其第一个操作数不是类对象,则必须使用友元函数,这样就可以将操作数按所需的顺序传递给函数了。...复习题 1.使用成员函数Stonewt类重载乘法运算符,该运算符将数据成员与double类型的值相乘。注意使用英石和磅表示时,需要进位。...成员函数是类定义的一部分,通过特定的对象来调用。成员函数可以隐式访问调用对象的成员,而无需使用成员运算符。友元函数不是类的组成部分,因此被称为直接函数调用。...: 6.在重载运算符=、( )、[ ]和->时,有什么限制? 这些运算符必须使用成员函数来定义。

    89120

    自制计算器——《自制编程语言》二

    根据上面的说明,词法分析器提供一下两个函数: // 将接下来要解析的行置入词法分析器中 void set_line(char *line); /* * 从被置入的行中,分割记号并返回 * 在行尾会返回...下面是上面两个函数声明和Token结构体的定义: ?     词法分析器的头文件如下: lexicalanalyzer.h ?    ...set_line()函数,只是单纯设置st_lin和st_line_pos的值 get_token()负责将记号实际分割出来,即词法分析器的核心部分。    ...2.本次的计算器是以行尾单位的,st_line会保存一行中的所有信息,但在当下的编程语言中,换行一般和空白字符是等效的,因此不应该以行尾单位处理,而是从文件中逐字符(getc()等函数)读入解析会更好。...parser.c没有直接使用lexicalanalyzer.c中写好的get_token(),而使用了my_get_token(),my_get_token()会对1个记号开辟环形缓冲区(Ring Buffer

    1.6K20

    C++ Primer Plus习题及答案-第十一章

    原文首发公众号iDoitnow 一般来说,访问私有成员的唯一方法是使用类方法,c++使用友元函数来避开这种限制,要让函数成为友元,需在类声明中声明该函数,并在声明前加上关键字friend。...运算符函数可以是类成员函数,也可以是友元函数(有一些运算符函数只能是类成员函数),如果要使其第一个操作数不是类对象,则必须使用友元函数,这样就可以将操作数按所需的顺序传递给函数了。...复习题 1.使用成员函数Stonewt类重载乘法运算符,该运算符将数据成员与double类型的值相乘。注意使用英石和磅表示时,需要进位。...成员函数是类定义的一部分,通过特定的对象来调用。成员函数可以隐式访问调用对象的成员,而无需使用成员运算符。友元函数不是类的组成部分,因此被称为直接函数调用。...: 6.在重载运算符=、( )、 和->时,有什么限制? 这些运算符必须使用成员函数来定义。

    70270

    《C++自定义类型的流输入输出:解锁高效编程新维度》

    在 C++的编程世界中,流输入输出操作是一项极为重要的功能。它允许我们方便地从标准输入输出设备(如键盘和显示器)读取和写入数据。然而,对于自定义类型,C++的标准输入输出流并不直接支持。...使用友元函数 在重载“和“>>”运算符时,我们通常会将它们定义为自定义类型的成员函数。然而,这样做有一个限制,就是只能在左侧操作数是输出流或输入流对象时使用。...& operator>>(istream& is, MyClass& obj); // 成员变量和其他成员函数 }; ostream& operator的“>>”运算符中处理这些错误情况,确保程序的稳定性和可靠性。例如,可以使用输入流的 fail()、eof()和 bad()函数来检查输入是否成功,并在出现错误时进行适当的处理。 3. ...在开发数据库应用程序时,我们可能需要定义一个自定义的数据结构,并实现其流输入输出操作,以便将数据存储到文件或从文件中读取数据。 总之,在 C++中实现自定义类型的流输入输出操作是一项非常有用的技能。

    12210

    Python编程入门基础语法详解经典

    以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用"from xxx import *"而导入; 以双下划线开头的(__foo)代表类的私有成员;以双下划线开头和结尾的...5.行和缩进 学习Python与其他语言最大的区别就是,Python的代码块不使用大括号({})来控制类,函数以及其他逻辑判断。python最具特色的就是用缩进来写模块。...注意:不要混合使用空格和制表符来缩进,因为在跨越不同的平台时无法正常工作。...y, "/" : x / y } print result.get(operator) 输出为0.5; 另一种使用switch分支语句的方案是创建一个switch类,处理程序的流程。...a) 创建一个switch类,该类继承自Python的祖先类object。调用构造函数init( )初始化需要匹配的字符串,并需要定义两个成员变量value和fall。

    1.3K10

    【C++】C++11线程库 和 C++IO流

    在下面代码中,我们实现了A类的operator int函数,则A类对象便可以隐式类型转换成内置类型int,同理只要我实现了operator bool函数,则A类对象也可以隐式类型转换为内置类型bool。...调用ifstream和ofstream对象的类成员函数read和write时,read是将二进制文件的内容读到char *的缓冲区当中,write是将const char *缓冲区中的二进制内容写到文件里面...下面是二进制将结构体ServerInfo内容写到文件中的结果,当结构体ServerInfo成员变量为char[32]数组时,二进制写入和读取都是没有问题的,而当结构体ServerInfo的char[32...,其实就是将string的buf数组整体写入到文件里面,那么读取的时候自然也会将文件中的内容读回到rinfo结构体中string的buf数组里面,所以这个写入和读取的过程是没有问题的,但还有一个容易忽略的因素就是...因为类设计层次的代码复用,说白了就是继承带来的效果,基类重载的成员函数派生类都可以直接调用,所以在使用i/ofstream对象进行读写时,除了调用read和write接口外,也可以直接用流插入和流提取。

    33720

    sh脚本

    [:digit:]]匹配所有非数字。 $ echo [![:digit:]]* 字符类也属于文件名扩展,如果没有匹配的文件名,字符类就会原样输出。 注意:文件名可以使用通配符。...如果用户的输入项多于定义的变量,那么多余的输入项会包含到最后一个变量中。 如果read命令之后没有定义变量名,那么环境变量REPLY会包含所有的输入。 #!...-s:使得用户的输入不显示在屏幕上,这常常用于输入密码或保密信息。 -u fd:使用文件描述符fd作为输入。 IFS变量 read命令读取的值,默认是以空格分隔。...$ read -a dice 上面命令将用户的命令行输入,读入数组dice。 读取数组 读取数组指定位置的成员,要使用下面的语法。...$ hobbies=( "${activities[@]" diving ) 默认位置 如果读取数组成员时,没有读取指定哪一个位置的成员,默认使用0号位置。

    10.8K30

    初识C++ · IO流

    为什么可以使用while来判断: 文档也没有过多的介绍,这里cin>>能作为返回值实际上是调用了istream类的函数: operator bool,检查到输出了类似于eof的这种标志,就返回了false...这里简单提一下,在竞赛中,如果io的输入输出过多了,就会影响效率的,因为C++兼容C语言,所以C语言有自己的缓冲区,C++也有自己的缓冲区,输入输出的时候,不同的缓冲区之间有绑定关系,即自己的事干完了还要看别的缓冲区有没有完事儿...2 文件流 文件流和C语言的文件流使用起来是方面很多的,这时IO流的一个优势,具体请看下文。...首先先来了解一下fstream的构造: 文件流类的构造的默认参数有了,我们就不用写,其中ios_base::in,是基类的,但是因为继承下来了,我们也可以使用fstream的in,但是没必要,然后: 根据文件的不同的读写模式可以实现不同模式的读取...但是二进制面临有地址的读写是会出问题的,因为结构体里面的数据有成员变量,string这种,如果是string,指向的空间我们是没有拷贝的,拷贝的是那个地址,所以如果使用二进制的读写string vector

    7310
    领券