`
libran
  • 浏览: 193402 次
  • 性别: Icon_minigender_1
  • 来自: 天津
文章分类
社区版块
存档分类
最新评论

C++ Primer读书笔记

阅读更多
 
注:本文www.Eachfun.com
         (整理说明:本资料是我在网上无意间找到的,读起来感觉不错,但由于原文是每章一个网页的格式,读起来不是很习惯,而且也不方便保存,所以我花了2个多小时的时间将所有网页的内容综合整理了一下,但最后才发现,文章的顺序颠倒了,所以各位如果愿意阅读本文的话,请从后面向前读,每个红色“标题”代表一章,如有不便还请各位见谅,或到原文网站阅览)
标题:函数再
函数是C++提出来的概念,但是在C中却未必没有。比如“1+3”“1.0+3.0”然都是加法,做的却不是同的操作:编译器要因操作数的不同而用不同的加法操作。只是C言中除了内部量可以参与运算以外,没有这么高深的概念。构体也只是内存数据的组织方法,而不整个构体的理。所以,在C编译器明明做了似于重的事情,却可以像雷做好事不留名
  C++展出了,并且予了很高的期望,象也能像内置象一参与一切运算。那,就拿加法运算来编译器如何知道类对象的加法该调用哪一个详细的操作代?于是,即使不出普通函数的重,至少运算符是要重的。
  林博士在《高C++/C程指南》中函数的必要性提了另一个理由:的构造函数名称必名相同,而常要定多个不同的构造函数。那就只好重了。
  于普通程序,我完全可以不用考这么深。重函数至少还带来了另一个好:不用记忆多个不同的函数名了,也不用函数起名而汁了。不书还给出了一个建:并不是任何候都有必要重函数的,有的候不同的函数名可以直来好多信息,用重只是牲了名称中的信息。
 
标题::重函数的概念
引用:出在相同作用域中的两个(可以是两个以上——猫注)函数,如果具有相同的名字而形参表不同,函数。
  本节开头第一句出了重函数的定:重函数必符合两个条件:一是出在相同的作用域中、二是函数名字相同而形参表不同。
  其中第一个条件一般人往往是不去想的,其函数名相同而作用域不同的函数大大存在,比如在MFC中就有。它是完全不相干的函数。
  第二个条件可以详说一下:函数名字相同当然不在下,是函数被称的根源。之于形参表不同,可能表在形参个数不同、可能表在形参型不同、可能表在形参序不同。
  如果要可以不是重函数的情况。
  一、如果既在同一作用域下、名称也相同、形参表也相同,后者被视为前者的重声明。——函数可以重声明,因函数的声明并不生目,但是函数的定不允
  二、如果既在同一作用域下、名称也相同、形参表也相同,但是返回不同,后者被视为错误的声明。函数不可以只凭返回来区分,因为调用函数的候只凭名称和形参来选择函数,而不凭返回。再究其原因,一是因函数的返回可以被弃;二来即使不弃,将返回值赋予另一个量之前没必要检查我需要什么样的返回,而能否赋值也与函数本身无
  三、有些候看起来形参表不同,实际上是完全相同的,本第229页讲了四组这样的例子:
Record lookup(const Account &acct);
Record lookup(const Account &);//
在于有没有形参命名
typedef Phone Telno;
Record lookup(const Phone&);
Record lookup(const Telno&);//
只是给类型取了个
Record lookup(const Phone&, const Name&);
Record lookup(const Phone&, const Name& = "");//
在于形参提供了默认值
Record lookup(Phone);
Record lookup(const Phone);//
在于是否const  
  其中第三可能会生函数的形参个数不同的假像,其可缺省的形参并没有减少形参的个数。第四有点不容易搞清:因有的候可以凭是否const来重,比如引用传递和指针传递
 
标题::文件的组织
一个程序往往由多个源文件成,些代究竟应该放在哪个源文件里、哪些代可以放在同一个源文件里、哪些代必需分放。是一个管理面的问题
  它是管理面的问题,是因为这些代组织往往没有惟一的准。但是它们还是有一定的律的。
  首先,件的维护是一个复杂的系工程。代组织应该有利于维护应该尽量把直接相的内容放在同一文件、不相的内容放在不同的文件里。如果些代码还和疏,那就要分不同的文件来存放了。
  其次,件的代是一个格的组织体系。不同的内容之可能是并列的,也可能有必要的先后系。于是在“#include”候要注意序。
  最后,也是最重要的一点,有些代在同一工程中可以重用(或必重用),有些代在同一个工程中只能出一次。可以重用的有的声明、函数的声明、量的声明等,不可以重用的是体、函数的体、量的定等。那,把可以重用的内容放在h文件中,把不可以重用的放在cpp文件中是一个好法。
  拿的声明和例,如果把一个的所有内容一古放在同一个文件中,将可能出现问题。因在其它用到类实例的地方都必须让类的声明,所以我往往在文件部加个“#include”体也被编译多次,在时产生冲突。
  在前文中曾提到,内函数是惟一允(也是必)在编译时让函数体可的的函数。所以内函数可以放在h文件中。C++规则中有一句正好与此照:在的声明中直接写出的函数被认为是内函数。
  Visual C++给类的文件起默,文件名往往与名一致。如果名由“C”开头文件会是除去开头“C”字以外的其它文字。如“CMyClass”,它的代存放在以下两个文件中:“MyClass.h”“MyClass.cpp”中。原因是VC++议类名以C开头,至于在文件名中不出现开头“C”,可能是出于微习惯
 
标题:的构造函数
引用:构造函数是特殊的成函数。
  笔:构造函数的确是一特殊的成函数。它的特殊性至少表在以下几个方面:一是它的用不用程序操心,只要类对象被建它就会被用,而且它不允被程序员显式地用。二是它是必需的,如果程序员偷懒编译器将自动创简单的构造函数。三是它的名字不用程序多考,直接与名相同。四是它没有返回
  下面详说这几个特性:
  一、它类对象被动调用,象可能有以下方法:程序中用声明量的句直接声明建,或者在程序中用new关键动态创建。方法都可以象,也都可以象数。只要有一个象被建,构造函数就被用一次。
  如果程序式地用构造函数那是不行的。正因如此,构造函数中有一特定的部分叫初始化列表,通它程序可以用基或成的构造函数。必竟设计千差万,如果某个的基或(和)成有多个构造函数,那该类指定用哪一个构造函数,否则类的功能将大打折扣。用构造函数不是程序的事,程序应该管也管不了。初始化列表解决问题而生,所以只有构造函数才有初始化列表,其它函数不能有。
  上面到的大打折扣究竟是怎的折扣呢?如果不能指定基和成用哪一个构造函数,那就只好让编译器去挑了,构造出来的象往往不符合要求,只好用基和成的其它函数,比如赋值函数或其它行参数定的函数——当然,基和成包含这样的函数。这样就浪源。
  二、包含构造函数——确切地是必包含无参数构造函数和拷构造函数——原因是因用是自的。如果两个函数根本就没有,你如何用?所以,C++也不含糊,你要是得写,它就帮你写一个简单的。简单就意味着至少要失一些功能,如果类设计得比较复杂(比如包含指操作)可能引起灾性事故。
  三、函数名与名一致。构造函数的名称是必特殊的,即使个特殊不表在与名相同,也必找到另一个规则实现。因要自动调些函数,你就必须让知道哪些函数是构造函数。
  第四个特性直接改C/C++言的一条规则C定,如果函数没有明指出返回型,那C认为返回int型。C言之所以可以有规则,一是因返回int的函数很多,二是因即使没有返回,也必指明void。当制定规则的人无法料到,C++中居然会出void都不是的返回的函数,void然表示不返回任何,必竟与构造函数的没有返回是两事。于是,C++定:在定或声明函数,没有式指定返回型中不合法的。当然的构造函数除外。
  构造函数的出有它的可行院厝恍浴?尚行允怯捎++包含成函数,既然可以包含普通的成函数,那包含特殊的函数自然也不在下。必然性是由于象往往必须经过特定的初始化。C++到来之前,C言中的数据型只是内置型。于内置象,如果忘了初始化,大不了象失去作用,但是不会致大的问题。比如一个int,无内存如何随机,它的取都不会超int能表达的范行运算也不会生危(溢出不能算危,即使初始化的数据也不能保不溢出,而且溢出只是一种逻辑问题)。但是在的这么简单了,忘了初始化往往将来运行错误。于其次都要考数据的初始化,不如把个初始化写成一的函数,动调用来得既安全又方便
 
 
标题:的成函数
C言中的构体最大的区就是可以函数,而构体只是一个内存。所以,要提就不得不提成函数。
  的成函数与普通函数(全局函数)相比,最根本的区实现的封装性。封装性的第一个表访问权限:都是函数,但是你能访问哪个不能访问哪个却可以定。第二个表是直,通过类(或指)来用函数,人的直就是提供的功能。你好像“Bird.Fly();”一目了然。
  在理解this以前要想底理解成函数是有困的,我就曾以例中保存了函数的副本。要不然,同一个的不同个函数有不同的效果呢?原来,在函数所有的形参之外,有一个不用你操心的参数this,它是一个指的目就是函数的用者。这么就明白了。
  函数形参表后加入const就成了“const函数这样的函数保用者自身不被修改。如CStringGetLength()函数,你只能取它的度,不能修改它的内容或度。加入const的作用倒不是怕用者修改,而是防止写函数的人不小心改象。因百密有一疏,万一在某个不修改数据的函数中改了数据(比如将“==”写成“=”),或者万一用了另一个非const的成函数都将可能引起错误。在写函数前就先加上const可以记编译器来帮你检查
  const加在形参表的后面得有些怪怪的,造成怪怪的原因就是因函数的形参表中没有this,也就没有能用const来修西了。林锐说大概是因其它地方都已被占用了并不是根本原因。
 
标题::内函数
函数应该了改善C言中的宏替的不足而生的吧。因宏替预编译中直接展的,展开过程中将生意想不到的果。典型的有“#define MAX(a, b) (a) > (b) ? (a) : (b)”“result = MAX(i, j)+2;”将被展开为“result = (i) > (j) ? (i) : (j) + 2;”然外面再加一括号可以解决以上问题,但是“result = MAX(i++, j);”被展后将
分享到:
评论

相关推荐

    C++Primer 读书笔记

    ### C++ Primer 读书笔记概览 #### 操作系统与主函数 - **主函数返回值的意义**:操作系统依据`main`函数返回的值来判定程序执行的状态,其中,0值意味着程序成功运行至结束。非零返回值,具体含义由操作系统定义...

    C++Primer读书笔记:C++概述.pdf

    C++Primer中文第三版(C++从入门到精通)第一章的读书笔记,主要是C++程序、预处理器指示符、iostream库等的基础知识点读书笔记。

    C++primer读书笔记

    ### C++ Primer 读书笔记概览 在深入探讨C++ Primer各章节的精要之前,我们先简要回顾一下这本经典教材的核心价值。《C++ Primer》是学习C++编程语言的必读之选,它不仅覆盖了C++的基础语法,还深入讲解了面向对象...

    《C++_Primer》MSDN读书笔记

    "C++ Primer读书笔记" 本文总结了C++ Primer读书笔记的要点,涵盖了C++语言的基础知识,包括变量、基本类型、常量、输入输出等。 1. 变量和基本类型 C++语言中有多种基本类型,包括整型、浮点型、字符型等。在...

    c++primer 学习笔记

    C++ Primer 是一本经典的C++学习书籍,涵盖了C++的基础知识和高级特性。这篇学习笔记主要涉及了C++编程的一些核心概念,包括程序结构、变量、基本类型、初始化与赋值、可读性、常量与引用、typedef、枚举以及标准库...

    C++primerplus笔记.pdf

    C++primerplus笔记.pdf

    C++ Prime 读书笔记

    ### C++ Primer 读书笔记概览 #### 一、程序入口与返回值 - **main()函数**: C++程序的入口点通常是`main()`函数。根据C++标准,`main()`函数可以没有显式的`return`语句。在这种情况下,程序会自动返回0,表示...

    c++primer学习笔记(转)

    C++是一门强大的编程语言,其包含了...以上就是C++ Primer学习笔记中涵盖的一些主要知识点。通过这些知识点的学习,可以帮助我们深入理解C++语言的核心概念和编程范式,从而编写出更加高效、安全和可维护的C++代码。

    C++ primer plus第五版学习笔记

    C++ primer plus 第五版的个人学习笔记,仅供大家学习参考。

    C++ Primer学习笔记

    《C++ Primer学习笔记》是一份详尽的资料,涵盖了C++编程语言的基础到高级概念。这份笔记旨在帮助初学者和有一定经验的开发者深入理解C++的语法、特性以及最佳实践。C++ Primer是C++编程领域的一本经典教材,以其...

    C++primer全书笔记

    《C++ Primer 全书笔记》是一份专为C++初学者设计的学习资源,由一位计算机专业学生在找工作的过程中为了复习C++ Primer而编写的详细笔记。笔记以易懂的方式介绍了C++的基础概念和核心特性,对于那些基础知识不扎实...

    c++ primer笔记

    根据给定的信息,“c++ primer笔记”主要围绕经典著作《C++ Primer》展开,这是一本深受程序员喜爱的书籍,旨在帮助读者系统地学习和掌握C++编程语言的基础及高级特性。下面将从几个关键方面对C++的核心知识点进行...

    C++ Primer学习笔记详解

    内容概要:这是关于《C++ Primer学习笔记》的文章,涵盖多种类型转换、异常机制、类静态成员、IO库介绍、顺序容器操作、泛型算法应用、关联容器概念与使用详解、动态内存智能指针管理、构造函数与拷贝构造细节探讨、...

    C++ Primer 学习笔记

    《C++ Primer 学习笔记》是一份针对C++初学者的重要参考资料,它基于C++ Primer第三版的内容,旨在帮助读者深入理解C++这门强大的编程语言。C++ Primer是学习C++的经典书籍,以其全面、深入且易于理解的讲解闻名,这...

    C++Primer笔记

    C++ Primer 笔记 本笔记基于 C++ Primer 的学习笔记,涵盖了友元函数、操作符重载、运算符重载、using 声明和引用等多个知识点。 友元函数 友元函数是一种特殊的函数,它可以访问类的私有成员。通过让函数成为类...

    c++ primer 笔记整理

    首先,C++ Primer 笔记会涵盖C++的基础语法,包括变量、数据类型(如int、char、float等)、运算符(算术、比较、逻辑、位操作等)以及流程控制(如if语句、switch语句、for循环、while循环)。这些构成了任何编程...

    C++Primer Plus学习笔记(三)

    C++ primer plus学习笔记之三,分为一下几个部分: 函数参数:介绍了函数的生命规则以及定义 数组函数:数组作为变量时的使用方法 指针和const:灵活运用指针和const 函数和二维数组:二维数组作为变量时声明以及定义...

Global site tag (gtag.js) - Google Analytics