有问题就有答案
Q1:C++无法从基类强制转换为派生类 (我用static_cast可以的) 然后我就不知道怎么回事了 ,有指针,有虚函数1
改为a=新B;是可以的;Dynamic_cast用于执行显式安全降频转换2只有当基类有虚函数且此时基类的指针有正确的子类类型时,dynamic_cast才会返回正确的指针;否则,它将返回03安全性体现在这个地方,只有基类指针可以向下转换为正确的子类类型4至于你用static_cast实现这个功能,是因为static_cast是强制转换,是一种不安全的转换方式5直接和你用B * B=(b*)a;没有区别6
Q2:C++学习http://redoufu.com/。89
大一学C,下班后一直用C101.从C初学者到精通的书单《The C programming language》必读《C++ Primer》,号称是一本入门参考书,可以让你从C或JAVA程序员变成真正的C程序员11《The C++ programming language》,C之父,被称为B教主的作品12读完C入门,应该可以跳过章节,选择读物13《Think in c++》,网上说这本书中文版翻译质量极差,建议看影印版,选择阅读14《Effective c++》,类似于Effective java,讲的是最佳实践,程序员一定要读懂15《More effective c++》,信的补充16《The C++ standard library》,可以写c,但是不能用标准库17就像java程序员不能使用java.util包一样,他们必须阅读它18《Effective STL》,STL库的最佳实践19有效C,作者的又一力作,必读20《The annotated STL source》,STL源代码分析,这本书应该算是深入/精通,请阅读21《Generic programming and STL》,被称为C编程,处理模板和泛型,所以掌握泛型势在必行22《C++ Template》,c模板编程,有代码复用经验,必读23《Exceptional C++》,类似于Effective C,属于最佳实践和问题分析24书中列举了许多应用场景和示例代码,供读者思考和选择25《More Exceptional C++》,信的补充26《Exceptional C++ Style》,以上书的补编是《Inside The C++ Object Model》27有了这些书作为基础,你终于可以读这本神书了28它将向您展示C对象模型的底层实现机制29看完这本书,任何C代码看起来都像流水,所以一定要读302.优秀C/C开源项目(已阅读代码)OS: Linux内核LVS、Linux应用DB: MySQL、PostgreSQL组件:VM、GCCFramework:OpenSip、SipProxy、Net: ACE (Java Mina、Netty)、TCP/IP、HTTP协议栈Cache:Memcached、Redis、library: STL (Java util包)、Boost、Qt(UI)、balance:Apache、NginxGSL地址:https://github.com/microsoft/. GSLBoost文档地址:官网、 https://www.boost.org/doc/libs/wxWidgets地址:http://wxwidgets.org/gtkmm地址:https://www.gtkmm.org/en/CopperSpice地址:https://www.copperspice.com/. Qt地址:https://www.qt.io/Eigen地址:http://eigen.tuxfamily.org/index.php? Title=main _ page # documentation plot utils地址:https://www.gnu.org/software/plotutils/Asio地址:https://think-async.com/Asio/POCO地址:https://pocoproject . org/. absel地址:https://absel . io/C中的开源库汇总列表地址:除了这些开源项目之外,你还可以在https://en . cppreference.com/w/CPP/links/libs中找到一些免费的开放课程,然后,一个由ACM金牌选手讲授的免费C课程就来了如果当年有这个教训,我的C就不会这样失效了313.c语法讲解语言基础,详细介绍变量、表达式、语句、指针、数组、进程控制、函数、文件组织等32抽象机制——面向对象编程深入解释了C语言的抽象机制,包括封装(类)、继承和多态;运算符重载、函数对象、异常处理等33模板-泛型编程详细介绍了C语言的模板机制、类模板、函数模板和模板专门化34
4.深度C面向对象4.135从C到C的引用和指针:为什么引用是重要的常量关键词:为什么常量是重要的命名空间)4.236深度C对象关于内置类型的C对象,如int和double对象,用户定义类型的对象类型的定义关键字类和结构类成员:成员函数和数据成员静态数据成员成员的访问控制对象的大小关于这个指针在一个成员函数上,什么可变数据成员常量修改4个特殊的成员函数:构造函数、析构函数、构造函数、运算符=对象的构造,以及初始化列表对象的析构函数的复制37什么情况下需要明确定义四个特殊函数C对象生命周期4.3、运算符重载关于C中的运算符重载机制重要运算符重载算术运算:-,*,/,%,-,关系操作:==,=下标访问:[]函数调用: ()、函数对象类型转换、单参数构造函数和隐式转换、防止隐式转换-显式关键字friends and members 4.4、面向对象基础-继承基类和派生类,讲对象构造和析构虚函数、纯虚函数派生类的内存布局、虚函数表的多态、多态类型,以及如何体现多态38
构、为什么虚析构很重要4.5、关于继承更多的话题多继承虚继承与虚基类对基类的访问、public /protected /private继承Down cast:static_cast和dynamic_cast运行期类型识别 (RTTI)4.6、C++与面向对象设计C++语言机制提供了完整的OOP支持超越继承OOP若干法则和设计模式5.C++泛型编程与STL5.1、C++ 模板机制5.2、STL 概要5.3、STL容器5.4、STL迭代5.5、STL算法5.6、预与定义STL数对象5.7、STL适配器6. C++进阶《C++ Primer》最新版本:第三版(第四版国外已上架, 国内一些网上书店也在预订中)适合有丰富C经验,缺乏C++经验的39不过我个人一直认为此书带着过于强烈的C语言的痕迹,对于C++的学习未必是 好事40《The C++ Programming Language》/《C++程序设计语言》最新版本:第三版特别版简称 TC++PL,有其他语言的丰富经验的41(也有人简称之为“TCPL”,但需与另一本《The C Programmer Language》区分开来)《Essential C++》《Accelerated C++》这两本薄一些,都是不错的选择42《Accelerated C++》本人没有读过,从各方面的评价来看,完全值得推荐43以上几本书都有相应的中文版,而且翻译的质量都不错44上面的书未必都需要读一遍,但无论如何,TC++PL是应该阅读的45《Effective C++》最新版本:第二版(第三版国外已上架,国内一些网上书店也在预订中)简称EC46C++程序员必读!很多时候,我们说C++圣经不是指TC++PL,而是这一本47《The Pragmatic Programmer》一书中写到:“一旦你发现自己要参与C++项目的开发,赶快跑(不要走)到书店去购买Scott Mayer的《Effective C++》,可能还要《More Effective C++》”48《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》/《C++ 编程规范》个人认为此书应为C++程序员必备的案头书49几乎Effective系列和Exceptional系 列都在这里得到了总结50最新的模版、异常的业界经验都在这里的到了体现51可能的唯一缺陷就是对一个新手而言,关于“为什么这么做”的问题,解释的不够52我 的看法是:如果你不理解其中的条款,记忆,并且照做;如果你理解其中的条款,我猜你一定会同意书中的观点53我认为这本书中的内容至少在2009年以前都不 会过时,人们将广为传诵它制定的101条戒律54还不知道他的简称,也许“101”会成为一个候选者?提到《Effective C++》,那么另外三本书一一浮出水面:《More Effective C++》《Exceptional C++》《More Exceptional C++》55新书《Exceptional C++ Style》也是值得一看的好书56上 述几本书,一本也不应该放过57个人建议上述书籍按顺序阅读58并且,在将来反复阅读这几本书59《Thinking in C++》/《C++编程思想》这本书及其中文版传言好坏都有,没有认真看过,不做评价,如果确有兴趣,不妨尝试 一下该书60以下几本书基本上涉及的都是语言本身,大体上可以按照以下的顺序阅读61《C++必知必会》如果早一年,这本书将是重量级的,然而它被101和《Exceptional C++ Style》盖过一头62《C++ Gotchas: Avoiding Common Problems in Coding and Design》/《C++程序设计陷阱》这又是一本我未曾读过,而且广受好评的书63《STL 源码剖析》这本书我刚到手,就被人"借"走,以至于到现在也没有看过64看过这本书的朋友,可以给一个合适的评价657. C++进阶之数据结构基础这是所有编程语言中最应该学习的部分,程序组成的基础之一66顺序存储、链式存储、循环链表;双向链表、栈(顺序和链式)、队列(顺序和链式);栈的应用、树基本概念及遍历、二叉树;排序算法、并归算法、选择、插入、快速、希尔67以上这些内容你知道吗?8. C++进阶之UI界面开发掌握QT类库构架,图形界面开发模型;掌握QT开发技巧,消息机制,图形处理;掌握QT网络编程,UDP,TCP使用方式;掌握QT文件处理方式,序列化;掌握QT在windows,linux,ios,android不同平台下的移植技术689. C++进阶之Unix/Linux网络服务器掌握Unix/Linux平台开发方式;熟练使用系统调用;熟练Unix/Linux内存管理,进程,线程调度;熟悉网络服务器开发方式,熟练编写TCP,UCP网络服务程序;掌握同步/异步IO模型在网络编程中的使用方式6910.C++进阶之数据库开发掌握SQL语言的实用技巧http://redoufu.com/。0Oracle,MySQL数据库的使用方式http://redoufu.com/。1如果你能熟练掌握以上列出的技能,具备解决复杂问题和技术难点的能力,而且你能独立开发一些比较复杂的功能模块,那么很荣幸地告诉你,你已经达到中级水平,薪资过万对你来说简直是小菜一碟http://redoufu.com/。211.C++标准参考C++ reference地址:https://en.cppreference.com/w/C++ Coding Standard地址:http://www.possibility.com/Cpp/CppCodingStandard.htmlStandard C++地址:https://isocpp.org/State of C++ Evolution地址:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2597.htmlThe C++ Resources Network地址:http://www.cplusplus.com/Draft C++ Standard: Contents地址:http://eel.is/c++draft/关注一些公众号,比如c语言与cpp编程
Q3:初学C语言用TC/VC?迷糊中http://redoufu.com/。3教材哪里找?
一开始用TC很容易,教材丰富http://redoufu.com/。4只需更换VC6.0 Visual的插件即可http://redoufu.com/。5在一个小的入口点协助http://redoufu.com/。6
Q4:
Q5:如何学好C++呢?
大一学习的c++,工作之后也一直用的c++http://redoufu.com/。71. 涵盖c++入门到精通的图书列表《The C programming language》必读《C++ Primer》,号称是一本可以让你从C或JAVA程序员转为一个真正的C++程序员的入门参考书,必读http://redoufu.com/。8《The C++ programming language》,C++之父,人称B教主著作,在看过C++ primer后,应该可以跳章选读http://redoufu.com/。9《Think in c++》,网上说此书的中文版翻译质量奇差,推荐看影印版,选读80《Effective c++》,类似 Effective java,讲的是最佳实践,程序员必读81《More effective c++》,上书的补充82《The C++ standard library》,会写C,不会用标准库怎么行83这就跟java程序员不会用java.util包一样,必读84《Effective STL》,STL库的最佳实践85Effective C++作者又一力作,必读86《The annotated STL source》,STL源码分析,这本书应该算是深入/精通类了,选读87《Generic programming and STL》,号称C++编程里,就是跟模板,泛型打交道,那么精通泛型是势在必行88《C++ Template》,C++模板编程,代码复用的经验之道,必读89《Exceptional C++》,跟Effective C++类似,属于最佳实践和难题解析,书中列出了许多应用场景和实例代码供读者揣摩,选读90《More Exceptional C++》,上书的补充91《Exceptional C++ Style》,上上书的补充《Inside The C++ Object Model》,有了上面这些书做铺垫,那么终于可以读此神书了92它会带你游览C++对象模型的底层实现机制93读完此书,任何C++代码看起来如同行云流水,必读942. 优秀的C/C++开源项目(阅读代码)OS:Linux kernel LVS、Linux应用程序DB:Mysql、PostgreSQLComplier:VM、GCCFramework:OpenSip、SipProxy、Net:ACE(Java Mina、Netty)、TCP/IP、HTTP协议栈Cache:Memcached、Redis、Library:STL(java util package)、Boost、Qt(UI)、balance:Apache、NginxGSL地址:https://github.com/microsoft/GSLBoost文档地址:https://www.boost.org/doc/libs/wxWidgets官网地址:http://wxwidgets.org/gtkmm地址:https://www.gtkmm.org/en/CopperSpice地址:https://www.copperspice.com/Qt地址:https://www.qt.io/Eigen地址:http://eigen.tuxfamily.org/index.php?title=Main_Page#DocumentationPlot utils地址:https://www.gnu.org/software/plotutils/Asio地址:https://think-async.com/Asio/POCO地址:https://pocoproject.org/abseil地址:https://abseil.io/C++开源库汇总列表地址:https://en.cppreference.com/w/cpp/links/libs除了这些开源项目,也可以找一些免费的公开课,那这里也推荐一个ACM金牌大佬讲授的免费C++课程,可以去体验一下:学好C++才是入职大厂的敲门砖! 当年要是有这课,我的C++也不至于这样已失效 3.C++语法讲解语言基础详细介绍变量、表达式、语句、指针、数组、流程控制、函数、文件组织等95抽象机制 - 面向对象编程深入讲解C++的抽象机制,封装(类)、继承、多态;操作符重载、函数对象、异常处理等96模板 - 泛型编程详细介绍C++的模板机制,类模板、函数模板、模板特化等方面的内容974.深入c++面向对象4.1、从C到C++引用和指针:为什么引用很重要const关键字:为什么const很重要名字空间 (namespace)4.2、深入C++对象关于C++对象内置类型的对象,如int、double对象,自定义类型的对象对象类型的定义关键字class和struct类成员:成员函数和数据成员静态数据成员成员的访问控制对象的size关于this指针onst成员函数、const究竟修饰什么mutable数据成员4种特殊成员函数:constructor、destructor、 constructor、operator=对象的构造、初始化列表对象的析构对象的复制什么情况下有必要显式定义4种特殊函数C++对象生命周4.3、操作符重载关于C++中操作符重载机制重要操作符重载算术运算:+, -, *, /, %, ++, --, ...关系运算:>, <, ==, !=下标存取:[ ]函数调用:(),函数对象类型转换、单参数构造函数与隐式转换、阻止隐式转换 -- explicit关键字友元与成员4.4、面向对象基础 -- 继承基类与派生类再谈对象的构造与析构虚函数、纯虚函数派生类的内存布局、虚函数表多态、多态类型、如何体现多态虚析构、为什么虚析构很重要4.5、关于继承更多的话题多继承虚继承与虚基类对基类的访问、public /protected /private继承Down cast:static_cast和dynamic_cast运行期类型识别 (RTTI)4.6、C++与面向对象设计C++语言机制提供了完整的OOP支持超越继承OOP若干法则和设计模式5.C++泛型编程与STL5.1、C++ 模板机制5.2、STL 概要5.3、STL容器5.4、STL迭代5.5、STL算法5.6、预与定义STL数对象5.7、STL适配器6. C++进阶《C++ Primer》最新版本:第三版(第四版国外已上架, 国内一些网上书店也在预订中)适合有丰富C经验,缺乏C++经验的98不过我个人一直认为此书带着过于强烈的C语言的痕迹,对于C++的学习未必是 好事99《The C++ Programming Language》/《C++程序设计语言》最新版本:第三版特别版简称 TC++PL,有其他语言的丰富经验的100(也有人简称之为“TCPL”,但需与另一本《The C Programmer Language》区分开来)《Essential C++》《Accelerated C++》这两本薄一些,都是不错的选择101《Accelerated C++》本人没有读过,从各方面的评价来看,完全值得推荐102以上几本书都有相应的中文版,而且翻译的质量都不错103上面的书未必都需要读一遍,但无论如何,TC++PL是应该阅读的104《Effective C++》最新版本:第二版(第三版国外已上架,国内一些网上书店也在预订中)简称EC105C++程序员必读!很多时候,我们说C++圣经不是指TC++PL,而是这一本106《The Pragmatic Programmer》一书中写到:“一旦你发现自己要参与C++项目的开发,赶快跑(不要走)到书店去购买Scott Mayer的《Effective C++》,可能还要《More Effective C++》”107《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》/《C++ 编程规范》个人认为此书应为C++程序员必备的案头书108几乎Effective系列和Exceptional系 列都在这里得到了总结109最新的模版、异常的业界经验都在这里的到了体现110可能的唯一缺陷就是对一个新手而言,关于“为什么这么做”的问题,解释的不够111我 的看法是:如果你不理解其中的条款,记忆,并且照做;如果你理解其中的条款,我猜你一定会同意书中的观点112我认为这本书中的内容至少在2009年以前都不 会过时,人们将广为传诵它制定的101条戒律113还不知道他的简称,也许“101”会成为一个候选者?提到《Effective C++》,那么另外三本书一一浮出水面:《More Effective C++》《Exceptional C++》《More Exceptional C++》114新书《Exceptional C++ Style》也是值得一看的好书115上 述几本书,一本也不应该放过116个人建议上述书籍按顺序阅读117并且,在将来反复阅读这几本书118《Thinking in C++》/《C++编程思想》这本书及其中文版传言好坏都有,没有认真看过,不做评价,如果确有兴趣,不妨尝试 一下该书119以下几本书基本上涉及的都是语言本身,大体上可以按照以下的顺序阅读120《C++必知必会》如果早一年,这本书将是重量级的,然而它被101和《Exceptional C++ Style》盖过一头121《C++ Gotchas: Avoiding Common Problems in Coding and Design》/《C++程序设计陷阱》这又是一本我未曾读过,而且广受好评的书122《STL 源码剖析》这本书我刚到手,就被人"借"走,以至于到现在也没有看过123看过这本书的朋友,可以给一个合适的评价1247. C++进阶之数据结构基础这是所有编程语言中最应该学习的部分,程序组成的基础之一125顺序存储、链式存储、循环链表;双向链表、栈(顺序和链式)、队列(顺序和链式);栈的应用、树基本概念及遍历、二叉树;排序算法、并归算法、选择、插入、快速、希尔126以上这些内容你知道吗?8. C++进阶之UI界面开发掌握QT类库构架,图形界面开发模型;掌握QT开发技巧,消息机制,图形处理;掌握QT网络编程,UDP,TCP使用方式;掌握QT文件处理方式,序列化;掌握QT在windows,linux,ios,android不同平台下的移植技术1279. C++进阶之Unix/Linux网络服务器掌握Unix/Linux平台开发方式;熟练使用系统调用;熟练Unix/Linux内存管理,进程,线程调度;熟悉网络服务器开发方式,熟练编写TCP,UCP网络服务程序;掌握同步/异步IO模型在网络编程中的使用方式12810.C++进阶之数据库开发掌握SQL语言的实用技巧129Oracle,MySQL数据库的使用方式130如果你能熟练掌握以上列出的技能,具备解决复杂问题和技术难点的能力,而且你能独立开发一些比较复杂的功能模块,那么很荣幸地告诉你,你已经达到中级水平,薪资过万对你来说简直是小菜一碟13111.C++标准参考C++ reference地址:https://en.cppreference.com/w/C++ Coding Standard地址:http://www.possibility.com/Cpp/CppCodingStandard.htmlStandard C++地址:https://isocpp.org/State of C++ Evolution地址:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2597.htmlThe C++ Resources Network地址:http://www.cplusplus.com/Draft C++ Standard: Contents地址:http://eel.is/c++draft/需要资料私聊我
Q6:如何学习c++?
c、这里有七个综合步骤:第一,明确方案的目标132首先,所有没有目标的工作都是“耍流氓”,所以在你开始写程序之前,你应该有一个清晰的想法133明确你想做什么,你需要什么信息,你需要什么计算和控制,以及程序应该报告什么信息134这些都想清楚了,我们就可以进行下一步了135第二,设计程序对这项工作有了概念上的理解之后,就要考虑如何利用程序来完成136例如,用户界面应该是什么样的?如何组织节目?谁是目标用户?完成这个程序需要多长时间?此外,我们必须决定如何在程序中表示数据以及如何处理数据137刚开始学C语言的时候,遇到的问题都很简单138然而,随着需要处理的局势日益复杂,需要决定和考虑的方面越来越多139一般来说,选择一种合适的方式来表示信息使得设计程序和处理数据变得更加容易140第三,写代码设计好程序之后,就可以开始写代码了141这一步是把你设计的程序翻译成C语言142一般来说,使用文本编辑器创建源代码文件143该文件中的内容是您翻译的C语言代码144清单1.1是一个C源代码的例子145在这一步中,您应该在自己的程序中添加文本注释146最简单的方法是使用C的注释工具向源代码添加解释147编译下一步是编译源代码148编译器是将源代码转换成可执行代码的程序149可执行代码是用计算机的机器语言表达的代码150这种语言由数字代码表示的指令组成151也就是说,不同的计算机使用不同的机器语言方案152c编译器负责将c代码翻译成特定的机器语言153此外,C编译器将源代码与C库的代码结合成最终的程序154最后,您可以生成一个用户可以运行的可执行文件,其中包含计算机可以理解的代码155编译器还会检查C语言程序是否有效156如果C编译器发现错误,它不会生成可执行文件并报告错误157理解特定编译器报告的错误或警告是程序员需要掌握的另一项技能158五、运行程序传统上,可执行文件是可运行的程序159在普通环境下运行程序(包括Windows命令提示模式、UNIX终端模式和Linux终端模式)需要输入可执行文件的文件名,而其他环境可能需要运行命令或一些其他机制160例如,在Windows和Macintosh提供的集成开发环境(IDE)中,用户可以通过选择菜单中的选项或按IDE中的特殊键来编辑和执行C程序161通过单击或双击文件名或图标,最终生成的程序可以直接在操作系统中运行162不及物动词测试和调试程序在运行程序的过程中,可能会出现运行错误163计算机行话叫bug,然后就是要发现并修复程序错误164这个过程叫做调试165你可能会犯一些基本的设计错误,错误地实现了一个好的想法,忽略了输入检查,导致程序瘫痪,放错括号,误用C语言或错别字等等166有虫子是正常的,不要紧张167现在我们可以进行下一步了168七、维护和修改代码调试程序后,有必要修改程序169比如用户输入以Zz开头的名字,程序有错误,你想到了更好的解决方案,你想增加更好的新功能,或者你想修改程序在不同的计算机系统中运行,等等170如果程序注释清晰,采用合理的设计方案,代码维护和修改都很容易171