目录
一、C++发展的历史
80年代 贝尔实验室 本贾尼
83年 正式命名为C++
87年 GNU制定了C++标准
92年 微软和IBM分别指定了C++标准
98年 ansi ISO制定了C++标准(C++编译器默认C++98)
03年 ISO C++03
11年 ISO C++0x
无论C++是否出现新标准,其实对程序员的影响不大,因为C++编译器默认C++98。
使用各标准的方法:
gcc ***.c -std = c99(这是C语言使用c99标准的方法,同样C++也是用这个语句)
二、 C和C++的关系
C++包含整个了C,C是建立C++的基础;
C++对类型检查更加严格;
C++扩展了C:
C++提供了面向对象的编程机制(以类的方式组织代码)
运算符重载(一种函数的特殊表现形式)
异常处理机制(新的错误处理方式)
泛型 和 模板(STL) (类型通用编程)
三、第一个C++程序
3.1 头文件
#include <iostream>//相当于C中的stdio.h
using namespace std;
int main(){
cout << "hallo c++!" << endl;//endl相当于C中的换行符; << 输出的意思
cout << "请输入年龄" << endl;
int age = 0;
cin >> age;// >> 输入的意思
cout << "你输入的年龄是" << age << endl;
}
选编译器:
方法一:
gcc "文件名" -lstdc++
(-lstdc++的意思是添加一个标准C++库)
方法二:
g++ "文件名"
标准C++头文件不再以.h结尾
标准c++头文件在usr/include/c++/4.6/
如:#include <iostream>
c++可以使用c语言的头文件
使用标准c头文件,建议去尾加头的方式去使用
如:#include <stdio.h> ---> #include <cstdio>
#include <string.h> ---> #include <cstring>
使用非标准c头文件
如Unix的:#include <pthread.h>
3.2源文件
建议使用.cpp结尾
但也可以是.c .C .cc .c++ .cxx
3.3输入输出
使用#include <iostream>
cout <<
cin >>
特点是自动处理格式
如C语言中输入:
scanf("%d",&age);
而c++输入:
cin >> age;
3.4编译器
建议使用g++
如果使用gcc,则需要加一个链接库 -lstdc++
g++的编译选项和gcc相同
-c 编译
-o 输出名
-On 优化(n是数字)
-S 生成汇编
-E 预处理
-I 指定头文件的位置
-L 指定库的位置
-l 指定库名
-std 指定编译标准
-g 生成调试信息
3.5 using namespace std;
使用标准的命名(名字)空间 std
四、命名空间
4.1命名空间就是把一组逻辑上相关的数据组织到一起的逻辑名。
作用是:
便于模块化
防止命名冲突
4.2语法
namespace 空间名{
//数据
int age;
void doo(){
}
}//注:无分号
4.3如何使用命名空间
方法一:在数据前加命名空间名::即可
方法一程序举例:
#include <iostream>
using namespace std;
namespace IBM{
int age = 99;
double salary = 8866;
void show(){
cout << "IBM age is" << age << endl;
}
}
namespace tarena{
int age = 14;
void show(){
cout << "tarena age is" << age << endl;
}
}
int main(){
IBM::show();//调用IBM中的show()
//改变IBM的age的值,并调用IBM中的show()
IBM::age = 88;
IBM::show();
tarena::age++;
tarena::show();
}
你会发现,方法一每次都得使用IBM::,太长了,很麻烦。我们来看方法二
方法二:使用using声明
using空间名::数据名;
方法二程序举例:
#include <iostream>
using namespace std;
namespace IBM{
int age = 99;
double salary = 8866;
void show(){
cout << "IBM age is" << age << endl;
}
}
namespace tarena{
int age = 14;
void show(){