《C和C++代码精粹》——1.17 标准库特征

1.17 标准库特征

C和C++代码精粹
本书的第三部分非常详细地说明了标准C++库。除流外,库还提供了大量具体实用的类型和容器类。尽管在早些时候,我定义了自己的复数类型以说明类的某些特点和运算符重载,标准库还是提供了带有一系列强有力的复数数学运算的复数类型。如程序清单1.18所示,complex是一个类模板,它可以采用任何想要的基本的数值类型(不论是浮点型、双精度型还是长双精度型)。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-09-05 13:17:24

《C和C++代码精粹》——1.17 标准库特征的相关文章

《C和C++代码精粹》导读

前言 C和C++代码精粹 本书适合于那些C和C++的职业程序员.假如你已熟悉这两种语言的语法和基本结构,这本书能够为你创建有效的.实用的程序提供实践性的指导.每一个代码范例或程序范例均标明行之有效的用法和技术,这些用法和技术对C/C++这两种重要编程语言的性能发挥起着重要的作用. 对于那些希望在工作中加强自身技术和提高效率的人来说,本书可以算是一本经验之谈.尽管目前人们对面向对象模式的推崇到了白热状态(本书也包括这方面的丰富内容),可是我没有理由不对C++的基础-C表示尊崇.我发现太多的程序开发

《C和C++代码精粹》——1.8 标准流

1.8 标准流 C和C++代码精粹C++中有4个预定义的流:cin(标准输入),cout(标准输出),cerr(标准错误),clog(标准错误).除了cerr外其余都是全缓冲流.就像stderr一样,cerr的行为好象是非缓冲的,但事实上它是单元缓冲的,也就是说它在处理完每一个对象而不是每一个字节后会自动清除缓冲.例如,带有单元缓冲的语句: cerr<<"hello":缓冲处理5个字符,然后清除缓冲区.一个非缓冲处理的流会立即发送每个字符到它的最终目的地. 程序清单1.5

《C和C++代码精粹》——2.12 指向函数的指针

2.12 指向函数的指针 C和C++代码精粹 一个指针可以指向函数也可以指向存储的对象.下面的语句声明fp是一个指向返回值为整型(int)的函数的指针: int(*fp)( ); *ftp的圆括号是必需的,没有它的语句 int *fp( ); 将fp声明为一个返回指向整型(int)指针的函数.这就是将星号与类型声明紧密相连的方式成为逐渐受人们欢迎的方式的原因之一. int fp(); //方式说明fp()返回一个指向整型的指针(int ) 当然,这种方式建议你通常应该每条语句只声明一个实体,否则

《C和C++代码精粹》——2.5 普通指针

2.5 普通指针 C和C++代码精粹 通常编写能接收指向任意类型参数的函数是很方便的.这是很有必要的,例如,用标准的库函数memcpy,能够从一个地址向另一个地址拷贝一块内存.你也可能想调用memcpy来拷贝自己创建的结构: struct mystruct a,b; /.../ memcpy(&a,&b,sizeof(struct mystruct)); 为了操作任意类型的指针,memcpy把它头两个参数声明为void型指针.可以不需要强制类型转换将任何类型的指针赋予void类型.也可以在

《C和C++代码精粹》——1.12 运算符重载

1.12 运算符重载 C和C++代码精粹在C++中你可以重载运算符,例如,定义一个复数的数据类型如下: struct complex { double real, imag; }; 假如能使用中缀符号用于复数加法,那将会相当方便.如: complex c1,c2; - complex c3=c1+c2; 当编译器遇到如c1+c2这样的表达式时,将查找下边两个函数中的一个(只须其中的一个存在): operator+(const complex&,const complex &); //全局函

《C和C++代码精粹》——1.16 语句声明

1.16 语句声明 C和C++代码精粹在C++中,声明可以出现在语句可以出现的任何地方.这就意味着不必在程序块的开始进行一组声明,而可以在第一次使用对象时定义它.例如,程序清单1.17中数组a在整个函数体中都是可见的,但是n直到声明后才有效,而i直到下一行才有效.注意i在第二次for循环中被再次声明,这说明了在循环中声明的变量的作用域是该循环本身. 程序清单1.17 声明是语句 // declare.cpp #include <iostream> using namespace std; ma

《C和C++代码精粹》——1.4 函数原型

1.4 函数原型 C和C++代码精粹在C++中,函数原型不是可选的.事实上,在ANSI C委员会采用原型机制以前,它是为C++发明的.在你第一次使用函数前必须声明或定义每个函数,编译器将检查每个函数调用时正确的参数数目和参数类型.此外,在其应用时将执行自动转换.下列程序揭示一个在C中不使用原型时出现的普通错误. /* convert1.c */ #include <stdio.h> main( { dprint(123); dprint(123.0); return 0; } dprint(d

《C和C++代码精粹》——1.9 格式化

1.9 格式化 C和C++代码精粹在程序清单1.8中ios::skipws是一个格式化标志的例子.格式化标志是位掩码值,该位掩码值可以通过成员函数setf来设置,也可用unsetf复位(见表1.1的完整描述). 程序清单1.9的程序阐述了数字的格式化.标准流成员函数precision用来指定浮点值显示的小数位数.如果没有设置ios::showpoint标志,那么末尾的零不被显示.要用前置加号来打印正数,就用ios::showpos.在上例中想要以16进制形式显示x 和在指数形式中显示大写e,使用

《C和C++代码精粹》——2.6 const指针

2.6 const指针 C和C++代码精粹注意memcpy函数第二个参数中的const关键字.这个关键字告诉编译器此函数将不会改变source指向的任何值(除了强制类型转换).当把指针作为参数传递时,总是合适地使用const限定符是一个很好的习惯,它不仅可以防止你无意中错误的赋值,而且还可以防止在作为参数将指针传递给函数时可能会修改了本不想改变的指针所指向的对象的值.例如,如果在程序清单2.6中的声明是: const int i=7,j=8; 有可能因为下面这条语句而得到警告: swap(&i,