《Primer C++ 3rd》读书笔记1

原创 2004年10月02日 23:06:00

第一章和第二章之前已经读过了,这里写出里边比较容易忘记的地方。总的说着两章都是介绍性质的。

第一章

解决问题的一般方法:分而治之和逐步求精 divide and conquer and stepwise refinement。有时候分析得出的步骤和现实中的操作步骤不同,这主要是因为现实和计算机中的虚拟空间的条件所致。步骤既是算法。

函数份由四部分组成:返回类型、函数名、变量表、函数体。前三项合称为函数原形。在声明函数的时候要写出函数原形,定义函数的时候当然都要写清楚。

程序有main()函数开始,逐项执行期其内容,直到遇到main()中的return()函数。return()为c++预定义函数,当遇到他的时候函数中止执行。c++标准中,若main()中没有显示提供返回语句,则它的缺省返回值是0。

预处理命令中,包含头文件时,<>指要包含的头文件是一个工程或者标准库中的头文件,编译器会在于定义的目录下查找这个文件;""指要包含的是一个用户提供的头文件,编译器会首先在当前文件目录查找。

由于头文件可以嵌套使用,所以为防止重复载入头文件,通常在定义的头文件中加入如下语句:
#ifndef BOOKSTORE_H
#define BOOKSTORE_H
     /* Bookstore.h contents go here */
#endif
这些语句在当两个头文件检查的预处理常量不同的时候可以有效使用This strategy works well provided that no two header files necessary for inclusion test on a preprocessor constant of the same name,所以要注意BOOKSTORE_H这样的预处理器常量名的选择的唯一性。

编译时可以在编译器中通过命令行定义预处理器常量,在外部完成选择性编译。

编译c++程序时,编译器会自动加入__cplusplus(two underscores)预处理器名(preprocessor name);而在c代码中加入__STDC__预处理器名。

编译器还会在编译时加入__LINE__当前编译的行数,__FILE__当前编译的文件名,__TIME__格式:hh:mm:ss,__DATE__格式:月(英文缩写)日 年。

以上这些编译器名都可在程序中使用,比如
#ifdef __cplusplus
   // ok: we're compiling C++
   // we'll explain extern "C" in Chapter 7!
   extern "C"
#endif
   int min( int, int );

if ( element_count == 0 )
     cerr << "Error: " << __FILE__
          << " : line " << __LINE__
          << "element_count must be non-zero./n";

assert.h用处很大,在c++标准中使用cassert来引用。

/*...*/注释不可以嵌套。如必要可以在内部/*之间加入空格来解决。

注意这一段:
#include <iostream>
#include <fstream>
#include <string>
int main()
{
   ofstream outfile( "out_file" );
   ifstream infile( "in_file" );
  
   if ( ! infile ) {
        cerr << "error: unable to open input file!/n";
        return -1;
   }

   if ( ! outfile ) {
        cerr << "error: unable to open output file!/n";
        return -2;
   }
  
   string word;
   while ( infile >> word )
           outfile << word << ' ';
   return 0;
}
1、 fstream本身就包含了iostream,这样既重复了,但是由于有了前面的预处理条件,所以不会有问题。
2、通过return和条件语句实现main()的结束,一共可以有多个return,但每个条件只有一个return。
3、infile、outfile都是对象,如读入文件成功则非零,if(!infile)可以用来判断读取文件是否成功。

本章其他内容都会在后边章节展开,所以这里就不多写了wink_smile.gif

C++ Primer中文版读书笔记

(注意,Lm 表示第 m 行,L-n 表示倒数第 n 行)■导读 p23原文:template T func( T p1, T p2, int p3 ) // ( T p1, T p2, int p3...
  • jaminwm
  • jaminwm
  • 2007年12月25日 20:04
  • 2429

《C++primer(第五版)》学习之路-第十一章:关联容器

【 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:libin493073668@sina.com】 11.1 使用关联容器 1. 关联容器类型 按关键字有序保...
  • libin1105
  • libin1105
  • 2015年09月26日 12:28
  • 1484

【c++ primer】第九章读书笔记

第九章   内存模型和名称空间
  • fghbnmjkl1
  • fghbnmjkl1
  • 2017年03月08日 08:09
  • 115

C++ primer读书笔记(1)

写在前面的话:
  • u013457107
  • u013457107
  • 2014年05月02日 00:17
  • 458

《C++ Primer》读书笔记第十一章-1-关联容器概述

笔记会持续更新,有错误的地方欢迎指正,谢谢!前言:前面学的都是顺序容器,顺序容器中的元素是按它们在容器中的位置来保存和访问的。接下来这一章学习关联容器:关联容器中的元素是按关键字来保存和访问的。 ...
  • BillCYJ
  • BillCYJ
  • 2017年09月22日 16:47
  • 90

c++ primer 读书笔记十一

3.4迭代器 和指针不一样的是,获取迭代器不是使用取地址符,有迭代器的类型同时返回拥有返回迭代器的成员,比如这些类型都拥有名为begin和end的成员,其中begin成员负责指向第一个元素的迭代器 ...
  • sinat_37339643
  • sinat_37339643
  • 2018年01月26日 15:24
  • 14

【c++ primer读书笔记】【第11章】关联容器

1、关联容器类型 按关键字有序保存元素 map 关联数组:保存关键字-值对应 set 关键字既值,既只保存关键字的容器 multimap 关...
  • ruan875417
  • ruan875417
  • 2015年03月29日 17:00
  • 264

C++ primer plus读书笔记(一)

这一系列的blog主要是对以前学过的C++的特点,以及面向对象的相关内容的总结。 面向对象的三大特征:封装、继承、多态。 访问控制原则: public:使用类对象的程序可以直接访问公有成员。...
  • u012927281
  • u012927281
  • 2016年08月17日 10:57
  • 304

C++ Primer 3rd 读书笔记1/2

C++ Primer 3rd 读书笔记1/2
  • conanswp
  • conanswp
  • 2014年04月08日 20:43
  • 1358

【读书笔记:C++ primer plus 第六版 中文版】第2章:开始学习C++

转载请注明出处: 本章内容包括: 创建C++程序. C++程序的一般格式. #include编译指令. main()函数. 使用cout对象进行输出 在C++程序中加入注释. 何时以及如何使用endl...
  • enyusmile
  • enyusmile
  • 2015年06月21日 10:33
  • 820
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《Primer C++ 3rd》读书笔记1
举报原因:
原因补充:

(最多只允许输入30个字)