《C和C++代码精粹》——1.19 小结

1.19 小结

C和C++代码精粹
作为一种多范例式的语言,C++:

1.是更好的C;

2.支持数据抽象;

3.支持面向对象编程。

C++是类型安全语言。

所有函数在第一次使用之前必须声明或定义。
引用参数直接支持引用调用语义。
可以重载函数和运算符。
模板允许创建通用函数。
内联函数将类似于函数的宏的高效与实际函数的安全性相结合。
自由存储运算符new和delete能根据类型计算对象的大小。
声明可以出现在函数可以出现的任意位置。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-09-29 16:22:49

《C和C++代码精粹》——1.19 小结的相关文章

《C和C++代码精粹》——2.15 小结

2.15 小结 C和C++代码精粹C和C++仅仅与那些使用它们的人一样危险.指针是地址.可以将任何一个指针赋值成void*.注意区分一个const指针和一个指向const的指针.p±n = =(char)p±n sizeof (*p).p-q = = ±n .*(a+i) = = a [i].除非在sizeof和&的上下文中,否则一个数组名即是指向它第一个元素的指针.没有多维数组,只有数组的数组.仅是指针的存在并不要求它所引用的类型的实现的有效性(这是一个不完全类型).如果理解了这些概念,你就正

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

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

《C++面向对象高效编程(第2版)》——3.19 小结

3.19 小结 C++面向对象高效编程(第2版)清楚地理解构造函数.析构函数.复制构造函数和赋值操作符的责任和限制.理解何时编译器会在未提供某项的前提下,自动生成的某项.在需要时尽可能地使用const成员函数.对于需要实现概念常量性(conceptual constantness)的地方,要在文档中清楚地说明.选择的类名和函数名应该表明各自的用途.避免使用缩写(除非问题领域中已熟知).较长的类名和函数名可传达更多的信息,且不会导致任何额外的编译时或运行时的开销.不要在函数声明中省略参数名称.每个

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

2.13 指向成员函数的指针 C和C++代码精粹如果返调函数是某个类的成员函数将会怎样?获得指向类成员的指针与获得指向非成员实体的指针的方式相似,只存在很小的语法变化.例如,考虑下面类的定义: class C { public: void f ( ) {cout << "C::f\n";} void g( ) {cout << "C::g\n";} }; 可以这样定义一个指向C类成员函数的指针: void (C::*pmf) ( ); //

《C和C++代码精粹》——2.11 更高深的内容

2.11 更高深的内容 C和C++代码精粹 我们可以很自然地得出以下结论:一个三维数组是二维数组的集合. int a[2] [3] [4]={{{0,1,2,3},{4,5,6,7},{8,9,0,1}}, {{2,3,4,5},{6,7,8,9},{0,1,2,3}}}; 这个数组的第一个元素是一个"二维数组" a[0](从技术上来说,a[0]是一个由3个含有4个整数的数组的数组),为了使指针与数组名a一致,定义: int (*p) [3] [4] = a; 程序清单2.16是一个应

《C和C++代码精粹》——2.7 指针和一维数组

2.7 指针和一维数组 C和C++代码精粹 在程序清单2.7中,会注意到在传递数组 s 时并没有使用它的地址,这是因为C和C++在大多数表达式中把数组名转换成指向它第一个元素的指针.自1984年以来,我已经向成百上千的学生讲授了C和C++,我注意到了指针和数组,特别是指针和多维数组之间的关系造成很多迷惑. 这样说似乎很奇怪,但是C++确实不支持数组,至少C++不像支持第一类数据类型如整型或者甚至结构体那样支持数组.考虑以下的语句: int i=1,j; int a[4]={0,1,2,3},b[

《C和C++代码精粹》——1.10 操纵器

1.10 操纵器 C和C++代码精粹 当标识符 endl出现在一个输出流中时,一个换行字符就被插入并且流被刷新.标识符endl是操纵器的一个例子,即为了副效应而插入到流的一个对象.在〈iostream〉中被声明的系统预定义的操纵器列于表 1.3中.程序清单1.11里的程序在功能上与程序清单1.10的程序等价,但它是用操纵器来代替显式调用setf函数.操纵器经常可以使代码更为高效. 表1.3 简单的操纵器(〈iostream〉) 程序清单1.11 用操纵器改变数据基数 // base2.cpp:

《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.2 循序渐进

1.2 循序渐进 C和C++代码精粹 在没有完全掌握C++的情况下也可以有效地使用它.事实上,面向对象技术承诺如果供应商为重用.可扩展性提供设计好的类库,那么建立应用程序的工作就很容易了.现有的开发环境,及其应用程序框架和可视化组件,正在兑现这一承诺. 如果觉得必须要掌握这种语言,可以一步步地去做,并且在这一过程中可以取得丰硕的成果.已出现的3个"顶峰"是: 1.更好的C: 2.数据抽象: 3.面向对象编程. 由于C++比C更安全.更富于表达,所以可以将它作为一个更好的C使用.这个顶峰