zoukankan      html  css  js  c++  java
  • c++ 01

    机械计算器->电子计算机->面向硬件->
    面向指令->面向过程->面向对象->面向问题
              Algo68 - 算法 -> Fortran
              CPL
              BCPL
              B
              C
              C++
    一、课程简介
    1.C++语法基础(6-7)
    从C到C++(1)
    类和对象(2)
    操作符的重载(1)
    继承和多态(1)
    异常和IO流(1)
    2.数据结构和算法(3)
    堆栈和队列(1)
    链表和二叉树(1)
    排序和查找算法(1)
    3.模板和STL(3)
    模板语法(1)
    STL容器和泛型算法(2)

    二、C++语言的诞生和发展
    1979.4,Bjarne Stroustrup,C++之父
    smalltalk,分布式计算仿真,动态类型
    B
    AT&T,贝尔实验室,UNIX内核仿真
    C,预定义宏,Cpre
    1979.10,C with Class
    1983,Algol - 运算符重载
          Ada - 模板和引用
          Clu/ML - 异常和多态
          -> C++
    1985,cfront 1.0
    1987,GNU C++
    1990,Borland C++
    1992,Microsoft C++,IBM C++,...
    1998,ISO C++98
    2003,修订C++2003
    2011,ISO C++2011,C++0x

    三、适用领域
    1.科学计算:现代风格的C++算法库。
    2.网络和分布式计算:ACE框架。
    3.操作系统和设备驱动:性能和代码紧凑性。
    4.移动终端:面向对象同时向下兼容C。
    5.大型游戏:高性能同时足够强的逻辑建模能力。
    C++语言追求性能和OO间的均衡。

    四、第一个C++程序
    1.编译器:g++
    2.扩展名:.cpp/.cc/.cxx/.C
    3.头文件:C++的标准头文件都没有.h扩展名
              C++对C兼容的头文件
    4.输入输出:cin/cout/cerr,>>/<<
    scanf (...) -> fscanf (stdin, ...)
    printf (...) -> fprintf (stdout, ...)
    5.名字空间:标准库中的对象都位于std名字空间中。

    五、名字空间
    针对全局域的标识符(变量、函数、类型)按照逻辑划分作用域。
    1.定义名字空间
    namespace 名字空间名 {
      名字空间成员
    }
    2.使用名字空间
    名字空间名::名字空间成员
              ^
              作用域限定运算符——“的”
    3.名字空间指令
    using namespace 名字空间名;
    该指令之后对特定名字空间中的成员可见,允许省略名字空间前缀。
    4.名字空间声明
    using 名字空间名::名字空间成员名;
    将制定名字空间中的指定成员名称引入当前作用域,允许省略名字空间前缀。
    5.无名名字空间
    任何没有被声明在有名名字空间中的标识符,都被置于无名名字空间中,通过“::标识符”显式表明所引用的是无名名字空间中的标识符。
    6.名字空间可以嵌套

    六、C++中结构、联合和枚举
    1.结构
    用结构类型定义变量时,可以省略struct关键字。
    struct Student {
      char name[128];
      int age;
    };
    struct Student s1 = {"张飞", 25}; // C
    Student s1 = {"张飞", 25}; // C++
    结构内部可以定义函数,称为成员函数。
    2.联合
    匿名联合
    3.枚举
    C中的枚举实际上就是整型,而C++中的枚举是一个独立的类型。

    七、布尔类型
    bool,true,false

    八、运算符别名
    && - and
    &  - bitand
    {  - <%
    [  - <:
    ...

    九、C++中的函数
    1.重载:在同一个作用域中函数名相同但参数表不同的函数构成重载关系。
    1)C++是通过换名,即将参数表信息汇合到函数名中,实现重载。通过在函数声明前写上
    extern "C"
    显式地告知编译器对该函数用C的方式生成接口,即不做换名。当然不换名的函数无法实现重载。
    2)函数重载不仅和函数的定义有关,而且与函数调用的上下文有关,只要在同一个作用域中可见,且需要通过重载解析规则确定调用版本,即具有重载特性。
    2.缺省参数
    1)如果提供实参,取实参的值,否则取缺省值。
    2)如果某个参数带有缺省值,那么它后面的所有参数必须都带有缺省值——靠右原则。
    3)注意防止和重载发生冲突。
    3.哑元
    只有类型而没有名称的参数。
    本身没有参数但是又需要通过重载区分不同实现版本的函数,往往会用到哑元。
    向下兼容。
    4.内联
    1)内联是一种优化策略,用编译好的函数二进制代码去替换对该函数的调用,通过牺牲空间换取执行时间。
    2)通过inline关键字显式地告诉编译器该函数希望被内联优化。
    inline void foo (...) { ... }
    对于稀少调用的复杂大函数,递归函数,虚函数,编译会拒绝做内联。
    3)结构体/类的声明和定义如果放在一起,其成员函数缺省为内联,可以省略inline关键字。

  • 相关阅读:
    jstl插件使用
    IDEA配置tomcat
    Spring框架
    2020/7/17 JAVA模拟斗地主发牌洗牌
    2020/7/15 JAVA之Map接口
    2020/7/14 Java之增强for循环、泛型、List接口、Set接口
    2020/7/13 集合之ArrayList集合、Collection接口、Iterator迭代器
    2020/7/13 常用API之基本类型包装类、System类、Math类、Arrays类、大数据运算
    2020/7/11 日期相关类
    2020/7/8 JAVA总结之:匿名对象/内部类/包的声明与访问/访问修饰符/代码块
  • 原文地址:https://www.cnblogs.com/elisha-blogs/p/3780663.html
Copyright © 2011-2022 走看看