《我的第一本C++书》在线阅读

2012-03-26 12:12 by 陈良乔, 2,065 次阅读, 30条评论



购买全书

  • Gtest

    P251
    for ( auto it = vecSalary.begin(); it != vecSalary.end() )
    {
    ……
    }
    代码有误。

  • Gtest

    抱歉,看走眼了。

  • http://chenlq.net 陈 良乔

    呵呵,谢谢你

  • zephan

    P72 中间部分 是不是应该是nDay=Weekday::sun; 啊?

  • http://chenlq.net 陈 良乔

    是的,应该是nDay=Weekday::sun,将sun写成了sum,疏忽了
    谢谢你的提醒

  • zephan

    嗯,下版修正就好,呵呵

  • http://网站地址(选填) 薛非

    唉!
    [部分内容被屏蔽:无论据的论点]

  • feng

    记得 64 位的 vc 中 long int 也是 32 位的

  • http://chenlq.net 陈良乔

    @ feng
    好像在标准中并没有对long的具体长度进行规定,只是规定不少于32位
    而具体多少是多少,很大程度上依赖于具体实现
    在什么地方见过这种说法,未经证实

  • http://网站地址(选填) 阿道夫

    p184页中有一个错误:

    m_fMember1 与 m_fMember2 是类Base的私有变量
    故:
    Base base;
    cout<<"类对象成员变量m_fMember1的地址是:"<<
    &(base.m_fMember1)<<endl; 会报无法访问private变量

  • http://网站地址(选填) 阿道夫

    另外对陈老师提点建议,就是在写书的时候需要站在读者的角度来写,书应该是从简到难,层层深入。不要把后面章节的知识直接用在前面章节的讲解中

    比如在还没有提到函数指针的情况下,在例子中就直接用上了,而且没有加任何注释
    像这样的问题在这本书里面很突出,望下次改版修正为盼

  • http://chenlq.net 陈良乔

    @ 阿道夫
    谢谢你的反馈:)
    你提到的
    比如在还没有提到函数指针的情况下,在例子中就直接用上了,而且没有加任何注释
    能指出一下具体在什么位置吗?我现在正在进行修改,希望可以改正

  • http://网站地址(选填) 阿道夫

    陈良乔 :@ 阿道夫 谢谢你的反馈:)你提到的比如在还没有提到函数指针的情况下,在例子中就直接用上了,而且没有加任何注释能指出一下具体在什么位置吗?我现在正在进行修改,希望可以改正

    陈老师需要从一个初学者角度重新审查此书,里面有大量的类似错误,把没有讲解的知识点直接用到了前面章节

  • http://chenlq.net 陈良乔

    谢谢你的反馈:)
    我已经注意到了这个问题,并已经在第二版中做了修改
    谢谢你

  • http://网站地址(选填) 阿道夫

    P277第二行说:“sort()算法就会将数据元素按照从小到大的顺序排序”
    P279倒数第一行说:“默认的从大到小的顺序”

    这里矛盾,对于初学者是误导

  • http://chenlq.net 陈良乔

    @ 阿道夫
    谢谢你的反馈:)

  • http://chenlq.net 陈良乔

    @ 阿道夫
    P279倒数第一行说:“默认的从大到小的顺序”
    这一个地方,能给出更加详细的信息吗?比如什么章节,完整的句子?
    我怎么在我的文档中找不到这个地方?

  • http://网站地址(选填) 薛非

    阿道夫 :

    陈良乔 :@ 阿道夫 谢谢你的反馈:)你提到的比如在还没有提到函数指针的情况下,在例子中就直接用上了,而且没有加任何注释能指出一下具体在什么位置吗?我现在正在进行修改,希望可以改正

    陈老师需要从一个初学者角度重新审查此书,里面有大量的类似错误,把没有讲解的知识点直接用到了前面章节

    《C程序设计伴侣》这种情况更严重

  • http://chenlq.net 陈良乔

    @ 薛非
    嗯,这两本书的情况有所不同
    《C程序设计伴侣》是一本伴侣书,也就是说他是在一定的基础之上的
    所以有些知识就直接用了

  • http://网站地址(选填) 阿道夫

    陈良乔 :@ 阿道夫 P279倒数第一行说:“默认的从大到小的顺序”这一个地方,能给出更加详细的信息吗?比如什么章节,完整的句子?我怎么在我的文档中找不到这个地方?

    位置在:

    10.4.2 对排序的规则进行自定义

    “但是它的排序规则是默认从大到小的顺序”

  • 陈良乔

    @ 阿道夫
    谢谢你的反馈
    这个错误已经被发现并修改了
    谢谢你

  • http://网站地址(选填) 薛非

    第343页
    感谢薛非网友指出。
    ====================
    请把我的名字删掉
    尽管我指出了你那个地方有错误
    但你根本不懂得错在哪里
    更正之后还是错误的
    这样可能会让别人误解成我是错的
    俺实在丢不起那个人
    那个错误始终存在
    too naive!

  • http://chenlq.net 陈良乔

    @ 薛非
    仍然感谢你

  • mashan

    看了一半。国内少见的很用心在写的书!

  • ChenLiangqiao

    谢谢你喜欢这本书
    在阅读的过程中,如果遇到什么问题,可以到这里来答疑

  • CJZ

    Mr.Chen
    你好,在你的著作<>中的第六章(当C++爱上面向对象)的6.2.4节(拷贝构造函数)中,举了一个为Computer类定义赋值操作符“=”的例子,该赋值操作符的函数中如果if语句中的条件不成立,则函数并未有返回值,然而该函数需要返回值(该函数的返回类型为Computer&),我认为此时函数的语法并不正确(尽管编译未报错),但是语句 newcom = oldcom 仍能运行,且结果正确。这让我百思不得其解。我做了一个尝试:将返回类型改为Computer,结果运行错误,这时需要在定义操作符函数的最后加上一句return-> *this,即函数需要返回值方能正确运行。我的问题是:返回类型Computer和Computer&在该例子中为什么会有不同的结果?谢谢,希望你能指导,感激不尽!

  • ChenLiangqiao

    谢谢你的问题:)
    你提到”我认为此时函数的语法并不正确“

    你的观点是正确的,这个函数在最后是应该返回值的,应该是return *this;

    可是,为什么我们的代码错了,结果还能正确呢?
    这是因为如果把=当作一个函数的话,newcomp = oldcomp实际上等同于
    newcomp.=(oldcomp)
    在这个过程中,根本没有用到=操作符的返回值,所以他对结果没有影响
    这个问题还没回答完,明天再说

  • ChenLiangqiao

    至于你的第二个问题,
    返回类型Computer和Computer&在该例子中为什么会有不同的结果?
    这是因为,如果你使用Computer对象作为返回值,在返回的时候,其实会用他的拷贝构造函数创建一个新的对象,而拷贝构造函数必须要一个参数,所以他必须要求一个返回值。
    而如果使用Computer&引用的形式,则不会创建新对象,只是引用原来的对象。本来也应该返回一个对象的,要不然会导致一个编译器警告

  • CJZ

    非常感谢你!我明白了!

  • ChenLiangqiao

    书中的代码实际上是存在一些瑕疵的
    应在这个操作符的末尾,也return (*this),在书中因为疏忽给忘了,谢谢你的提醒