`

如何学习C++

c++ 
阅读更多
1,C++的历史及其发展:主要涉及C++是如何产生的,主要是为了解决什么问题而被发明的,C++到目前为止的版本,C++目前在市场的使用率
    产生原因:
        C语言的广泛使用和C语言难于适应大型软件的开发
面向对象编程思想的影响
    C++的几个版本:
        ISO/IEC 14882:2011,C++11
        ISO/IEC TR 19768:2007,C++TR1
        ISO/IEC 14882:2003,C++03
        ISO/IEC 14882:1998,C++98
    C++的设计原则:
        C++设计成使用静态类型机制、和C同样高效且可移植的多用途程序设计语言。(意思就是高效可移植多用途的编译语言)
        C++设计成直接的和广泛的支持多种程序设计风格(过程化程序设计、数据抽象化、面向对象程序设计、泛型程序设计)。(C++不是纯面向对象的)
        C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。(涉及对底层的操作、让程序员谨慎编写程序)
        C++设计成尽可能与C兼容,借此提供一个从C到C++的平滑过渡。(争取C程序员)
        C++避免平台限定或没有普遍用途的特性。(这点感觉还是C++可以直接操作底层、操作硬件)
        C++不使用会带来额外开销的特性。(就是语言本身不维护能够通过谨慎编写程序而避免的错误)
        C++设计成无需复杂的程序设计环境。(不依赖其他程序)
2,C++的功能、作用、价值:主要涉及C++能解决什么问题,做出什么样的东西,做出的东西目前市场上的评价,C++的开发效率等
3,C++的编译原理,编译器的配置,目前常用的编译器种类、IDE
    编译器:
        GCC,GNU 编译器套装,以前是GNU C语言编译器,只能编译C,但是现在可以编译C、C++、Fortran、Pascal、Objective-C、Java
是Linux系统和Mac系统的标准编译器。
        clang,苹果公司开发的C语言、C++、Objective C、Objective C++语言的轻量级编译器。
Apple 使用 LLVM 在不支持全部 OpenGL 特性的 GPU (Intel 低端显卡) 上生成代码 (JIT),令程序仍然能够正常运行。
之后 LLVM 与 GCC 的集成过程引发了一些不快,GCC 系统庞大而笨重,而 Apple 大量使用的 Objective-C 在 GCC 中优先级很低。
此外 GCC 作为一个纯粹的编译系统,与 IDE 配合很差。加之许可证方面的要求,Apple 无法使用修改版的 GCC 而闭源。
于是 Apple 决定从零开始写 C family 的前端,也就是基于 LLVM(低端虚拟机) 的 Clang 了。
    构建工具:
        gnu make:
        pmake:
    阅读工具:
        cscope:
        ctags:
        lxr:
    集成开发环境(IDE)   
        1.Visual Studio(Visual C++)
        2.Borland C++ Builder   
        3.Eclipse(Myln + CDT + MinGW32 + GCC)   
        4.Dev-C++(MinGW32 + GCC)   
        5.Code::Blocks(可配合多款编译内核使用)   
        6.CodeLite
        7.C-Free   
        8.Qt Creator等基于Qt开发框架的IDE   
        如上所示,目前流行的 GNU GCC 和 Microsoft Visual Studio 以及 Borland C++ Builder 系列各执一套基本的编译链,其它的IDE都是衍生产品。
4,C++的语法:数据类型,常量,变量,表达式,语句,控制结构,函数,源文件,包,注释、预处理、模块,库函数,组件,框架,项目,产品
    数据类型:基本数据类型,构造数据类型
        基本数据类型:整型、浮点型、字符型、布尔类型、无值型,修饰符
    整型:int;int为一个机器字,short为半个机器字,long为一个或两个机器字(在32位系统中,通常为1个)
    浮点型:double、float:通常float为一个机器字,double为两个机器字,long double为三个或四个机器字
    字符型:char、wchar_t:char为一个机器字节,wchar_t为两个或四个机器字节
    布尔型:bool(0为false,非0为true)
    无值型:void
    修饰符:signed 有符号 unsigned 无符号 short 短型 long 长型
        整型和字符型都可以使用signed和unsigned来修饰
构造数据类型:数组、枚举、结构体、联合体、指针、类
    数组:
        声明:int arr1[3],arr2[]={1,2,3},arr3[3]={4,5,6};
初始化:arr1={4,3,2};arr1[0]=2;
数组和指针:
    数组的名称为数组的首地址
注意:
    数组维数必须为常量或常量表达式
    初始化字符数组的字符串比字符串长度多1
    C++无论在编译期还是运行时都没有提供数组越界检查,需要程序员自己注意

            指针:指针持有两一个变量的地址,通过指针可以间接的操作这个变量。指针一般用于需要链接的数据结构(树),管理动态分配的内存变量
                  ,作为函数变量时用于传递数组和其他大型的构造类型变量
        定义指针:变量名前加*,int *p;
初始化指针:int *x_p=&x;x_p=&x;
取变量地址:&
间接获取指针指向的变量:*x_p
    引用类型:
        定义:int &x=p;必须初始化,引用就是原始变量的别名,主要是为了在函数参数上使用
    枚举类型:都是整型,默认从0开始赋值
        定义:enum x{a,b,c}
    字符串:C风格的字符数组和C++的string类
    typedef:类型别名
    volatile:限定编译器优化此变量
    pair:组合两个变量
            类:
        声明:
    常量:整型,浮点型,字符型,字符串
        文字常量:例如1,2,'2',"222",3.4等,文字常量存于内存的某处,但是你是找不到地址的,是不可寻址的
整型后后面加L为long,加U为无符号,加UL为无符号long,
整型前面加0表示八进制,加0x或0X为十六进制,不加为十进制
浮点型后面加F表示float,加L表示long double,科学计数使用E
布尔类型为true和false
字符类型为'x',L'x'表示为wchar_t,各种转义字符现用现查
字符串类型使用双引号包含,换行的话使用\,宽位字符前面加L,字符串连接使用空格,char字符串不要和wchar_t字符串连接
符号常量:使用const关键字
    变量:变量名,变量的作用域,变量的其他修饰符,静态还是动态分配内存
        变量提供一个有名字的内存存储区,变量的左值是内存地址,右值是文字常量
变量名:
    符合普通的标识符规则,字母、数字、下划线组成,数字不能开头,不能使用关键字,具体名称可以自定义,符合项目的编码规则

        作用域:全局和局部
    全局:函数外定义,提供初始值0
    局部:函数内定义,不提供初始值0,只是随机位串或以前的值
初始化:显式和隐式
    显式:使用赋值操作符,例如int x=0;
    隐式:使用括号,例如int x(0);
变量的存储方法:
    自动的auto
        函数的局部变量(不包括使用static修饰的局部变量)都是自动的,auto可以省略,占用的内存是动态存储区,生命期是函数的开始和结尾
    静态的static
        如果使用static修饰局部变量,那么下一次再运行此函数时,static变量的值为上次运行的最后结果,占用的是静态存储区内存
由此可见,静态存储区是默认赋予初值的,动态存储区初值是随机产生的。
如果使用static修饰全局变量,那么此变脸的作用范围只为此文件,不能在其他文件使用extern来声明才变量。
如果使用static来修饰函数,那么此函数的作用范围只为此文件,不能被其他文件的函数调用。
    寄存器register
        如果使用register修饰局部变量,那么将此变量放到寄存器中,建议性语法,编译器喜好决定
    外部的extern
        全局变量为函数外定义的变量,占用的内存是静态存储区,作用范围为声明处到源程序结尾
如果想扩展到整个文件,那么在此文件调用前声明为extern
如果想扩展它的方位到多个文件,那么可以再其他文件使用extern来声明此变量。
被extern修饰的函数为外部函数,可以被其他文件调用,默认可以省略extern
变量的额定义性声明和非定义性声明:
    一般来说分配存储空间的为定义性声明,不分配的非定义性声明。
    表达式:赋值表达式,算数表达式,逻辑表达式,关系表达式,
        位运算符:^按位异或 ~按位取反
指针运算符:*
引用运算符和地址运算符:&
成员运算符:.
指向成员的运算符:->
    语句:语句结尾符号,顺序,选择,循环,其他
声明语句:
执行语句:
    函数:作用域,返回值,参数列表,修饰符、重载函数、函数模版
        内联函数:inline,又名内置函数、内嵌函数,就是把函数内容放到调用它的位置处,避免流程转换,提高效率,但肯定确实程序大小扩大,消耗内存
    一般是将5个语句以内且被调用很多次的函数声明为内联函数。内联函数不能包括复杂的控制语句和循环语句哦。而且被声明为内联函数不一定就把函数
    的代码嵌入到调用处,根据编译系统的喜好来。
重载函数:很容易理解哦
函数模版:template <class T>...或 template <typename T>...感觉就是相同数量参数的函数重载的优化
函数指针:指向函数地址的指针
    异常处理:
    源文件:作用域,类型
    包:
    注释:行注释//,块注释/*  */
    预处理:宏定义,文件包含、条件编译,使用#开发,末尾不加分号
        宏定义:#define x y,使用x代替y,因为拥有了内联函数,基本上不适用宏定义了,主要拥有条件编译中
文件包含:#include <>或"" <>为系统类库 “”为自写的文件
    文件包含的头文件一般包括:对类型的声明、函数声明、内联函数、宏定义和常量、全局变量、外部变量声明、还可以包含其他头文件
条件编译:
    #ifdef ....#endif
    #if ..#else...#endif
    模块:如何划分更好
    库函数:STL(标准模板库)、C标准程序库的稍加修改版本
    组件:
    框架:MFC
    项目:
    产品:
分享到:
评论

相关推荐

    从java到c++,适合java程序员快速学习c++

    "从 Java 到 C++, 适合 Java 程序员快速学习 C++" 这篇文章旨在帮助 Java 程序员快速学习 C++,通过比较 Java 和 C++ 的区别,帮助读者快速理解 C++。以下是从 Java 到 C++ 的知识点总结: 数据类型和变量 * C++ ...

    你应当如何学习C++

    学习C++的道路并非一帆风顺,由于C++语言本身包含了大量的细节,使得初学者往往在探索过程中迷失方向。在C++的世界里,错误的学习方法和误解常常导致学习效率低下。C++的复杂性主要源于三个方面:语言细节繁多、经典...

    C++箴言 告诉你怎样更好的学习C++

    学习C++并不一定需要先学习C语言,尽管C语言是C++的基础,但直接从C++开始学习也是可行的,特别是当你找到一些高质量的C++实例来引导入门时。在数学分析等抽象思维训练中,递归的概念对理解C++中的函数调用和复杂...

    学习C++的四个层次(美化版)

    ### 学习C++的四个层次详解 #### 第一层次:C++基础 在这个阶段,初学者需要构建对C++的基本理解。为了更好地掌握基础知识,推荐以下几本经典的入门书籍: - **《C++ Primer》**:这本书是C++学习者的首选教材之一...

    学习C++的第一课

    学习C++的第一课,新手让我们一起来学习C++吧

    如何学习c++如何学习c++

    如何学习c++如何学习c++如何学习c++如何学习c++如何学习c++

    学习C++的忠告50条

    ### 学习C++的忠告50条详解 #### 1. C++与C的关系 C++在设计之初确实受到了C语言的影响,但两者在语法、特性以及用途上都有很大的区别。C++不仅继承了C的核心功能,还引入了许多新特性如面向对象编程(OOP)、模板...

    学习C++相关知识的代码.zip

    学习C++相关知识的代码.zip学习C++相关知识的代码.zip学习C++相关知识的代码.zip学习C++相关知识的代码.zip学习C++相关知识的代码.zip学习C++相关知识的代码.zip学习C++相关知识的代码.zip学习C++相关知识的代码.zip...

    学习C++必看书籍

    学习 C++ 必看书籍 在学习 C++ 的过程中,选择合适的书籍是非常重要的。以下是根据作者的学习经历和经验提出的学习 C++ 的书籍推荐。 第一步:基础入门 在学习 C++ 之前,需要先学习 C 语言。潭浩强的《C 程序...

    学习 C++ 的50个 经验

    《The C++ Programming Language》和《Inside The C++ Object Model》则适合进阶学习,虽然难度较高,但能让你深入理解 C++的本质。 在学习过程中,不应过于依赖集成开发环境(IDE),如 Visual C++,而是要学会...

    完整的学习C++的读书路线图

    学习C++的过程是一个系统性的旅程,需要按照一定的顺序和路径进行。以下是一个推荐的C++学习路线图: 首先,从《C++ Primer》开始。这本书是C++初学者的入门经典,它详细介绍了C++的基础语法,包括变量、类型、控制...

    C++名家对话和C++完整学习路线 C++ 学习 C++ 大师

    其次,"完整的学习C++的读书路线图.txt"文件则为C++学习者提供了一条清晰的路径。这可能是一个详细的学习计划,指导读者从基础语法开始,逐步掌握面向对象编程,再到STL(标准模板库)的使用,以及更高级的主题如...

    学习C++的忠告(必看)

    学习C++的忠告 C++作为一门强大的编程语言,其深入学习对于任何希望成为专业程序员的人来说都是必不可少的。本文将探讨学习C++的重要性、学习方法以及C++程序设计的基本原则,帮助你踏上成功的道路。 首先,我们来...

    介绍学习C++的各个层次书籍

    详细介绍了该如何学习C++的书籍,把C++最重要的读物按照由浅到深的层次排列。

    Sams 教你每天一小时学习C++

    《Sams教你每天一小时学习C++》是一本旨在帮助初学者系统且高效学习C++编程语言的书籍。作者通过将复杂概念分解成易于理解的小块,使得读者能够在每天一小时的学习时间内逐步积累并掌握C++的核心知识。这本书是Sams...

    学习C++的一些资料和程序,可以参考 .zip

    学习C++的一些资料和程序,可以参考。.zip学习C++的一些资料和程序,可以参考。.zip学习C++的一些资料和程序,可以参考。.zip学习C++的一些资料和程序,可以参考。.zip学习C++的一些资料和程序,可以参考。.zip学习...

    学习C++的步骤推荐

    学习C++的步骤推荐,好好学习c++的长远规划。

    学习C++所有的资料包

    - **《C++ Primer》**:这本书是学习C++的基础教材之一,适合初学者入门使用。它详细介绍了C++的基本语法、数据类型、控制结构等基础知识,并通过丰富的示例帮助读者理解和掌握C++的核心概念。 - **《C++ Primer ...

Global site tag (gtag.js) - Google Analytics