C+语言的小总结

一、C++语言语法基础(6)
1.从C到C++的过渡
2.类和对象
3.操作符重载
4.继承与多态
5.异常和I/O流
二、数据结构和算法
1.基本数据结构,堆栈、队列、链表、二叉树,实现和应用(2)
2.排序和查找算法
三、模板和STL
1.模板语法
2.STL
四、阶段项目
简化的企业管理信息系统(MIS)
第一课 从C到C++的过渡

一、背景介绍
算盘 - 面向硬件的编程
电子计算机 - 机器语言的编程1010
- 汇编语言的编程ADD
- 高级语言的编程Fortran
printf ("%d", 12);
- 结构化程序设计C/PASCL
顺序、分支、循环、函数
- 面向对象的程序设计C++/Java/C#
- 面向问题的程序设计
1960 - Algol 60,算法语言,远离硬件,不适合进行系统开发
1963 - 剑桥大学,CPL,在Algol 60的基础上增加对系统开发的支
持,复杂,不易掌握,不易使用
1970 - MIT,BCPL,CPL的精华版,易学易用,太慢,不实用
1972 - Ken Thomposon,B语言,通过运行时支持优化BCPL的性能,缺少类型
1973 - Dennis Ritchie,C语言,用C重新实现UNIX内核
1978 - 《The C Programming Language》,第一个C语言的事实标准
1989 - ANSI C,C89
1990 - ISO C, C90
1999 - ISO C 修订,C99
197X - Bajarne Stroustrup,simula早期的面向对象语言,性能低
下,B语言。
1979 - 贝尔实验室,多核UNIX系统仿真,Cpre,
通过扩展宏为C语言增加类似simula的面向对象机制。C with Class:
simula - 类
Alogo 68 - 操作符重载
Ada - 模板、名字空间
Smalltalk - 引用、异常
C是C++的子集,C++是对C的扩展。
1983 - C++命名
1985 - CFront 1.0,第一款商用C++编译器
1987 - GNU C++
1990 - Borland C++
1992 - Microsoft C++,IBM C++
1998 - ISO C++98
2003 - ISO C++03
2011 - ISO C++2011/C++11/C++0x

二、C++语言的使用领域:
1.游戏开发:强建模能力,性能高。
2.科学计算:FORTRAN,C++算法库。
3.网络和分布式:ACE框架。
4.桌面应用:VC/MFC,Office,QQ,多媒体
5.操作系统和设备驱动:优化编译器的发明使C++在底层开发方面可
以和C向媲美。
6.移动终端
既需要性能,同时又要有面向对象的建模。
三、C++比C更丰富
1.支持面向对象,将问题域和方法域统一化。宏观面向对象,微观面
向过程。
2.支持泛型编程。
int add (int a, int b) { … }
template
T add (T a, T b) { … }
3.支持异常机制。
int func (void) {

}
int main (void) {
if (func () == -1) {
错误处理;
}
}
4.操作符重载

四、第一个C++程序
1.编译器:g++,如果用gcc需要带上-lstdc++,
指定其使用标准c++的运行库。

2.源文件扩展名:.cpp/.cc/.C/.cxx/.c++,最好用.cpp

3.头文件:#include
大多数标准库头文件都没有.h后缀。

4.输出:cout - 标准输出对象
输入:cin - 标准输入对象
插入运算符:<<
提取运算符:>>
5.std:所有标准库的函数、对象、类型都位于std名字空间中。
五、名字空间
1.对程序中的标识符(类型、函数、变量),
按照某种逻辑规则划分成若干组。

2.定义名字空间
namespace 名字空间名 {
名字空间成员;
}

3.使用名字空间
1作用于限定符:名字空间名::名字空间成员,
表示访问特定名字空间中的特定成员。
例子:
#include
int main (void) {
std::cout << “Hello, World !” << std::endl;
int i;
double d;
char s[256];
// scanf ("%d%lf%s", &i, &d, s);
std::cin >> i >> d >> s;
// printf ("%d %lf %s\n", i, d, s);
std::cout << i << ’ ’ << d << ’ ’ << s << ‘\n’;
return 0;
}

2名字空间指令:
using namespace 名字空间名;
在该条指令之后的代码对指令所指名字空间中的所有成员都可见,
可直接访问这些成员,无需加“::”。
例:using namespace std;
3名字空间声明:
using 名字空间名::名字空间成员;
将指定名字空间中的某个成员引入当前作用域,
可直接访问这些成员,无需加“::”。
4.匿名名字空间
如果一个标识符没有被显示地定义在任何名字空间中,
编译器会将其缺省地置于匿名名字空间中。
对匿名名字空间中的成员通过“::名字空间成员”的形式访问。
5.名字空间合并
6.名字空间嵌套
namespace ns1 {
namespace ns2 {
namespace ns3 {
void foo (void) { … }
}
}
}
ns1::ns2::ns3::foo ();
using namespace ns1::ns2::ns3;
foo ();

例子:名字空间
#include
using namespace std;
//namespace {
void print (int money) {
cout << money << endl;
}
//}
// 农行名字空间
namespace abc {
int balance = 0;
void save (int money) {
balance += money;
}
void draw (int money) {
balance -= money;
}
}
namespace abc {
void salary (int money) {
balance += money;
}
void print (int money) {
cout << “农行:”;
::print (money);
}
}
// 建行名字空间
namespace ccb {
int balance = 0;
void save (int money) {
balance += money;
}
void draw (int money) {
balance -= money;
}
void salary (int money) {
balance += money;
}
}
int main (void) {
using namespace abc; // 名字空间指令
save (5000);
cout << “农行:” << balance << endl;
draw (3000);
cout << “农行:” << balance << endl;
ccb::save (8000);
cout << “建行:” << ccb::balance << endl;
ccb::draw (5000);
cout << “建行:” << ccb::balance << endl;
using ccb::salary; // 名字空间声明
// using abc::salary;
salary (6000);
cout << “建行:” << ccb::balance << endl;
abc::print (abc::balance);
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值