编译环境介绍:本人使用的是Linux下的GNU C++ Compiler4.5.4编译器 还可以使用Windows下的MicrosoftVisualC++2008
一.C++介绍
1.1一门应用最广泛的面向对象程序语言在C语言基础上扩充出来的C++语言,对C兼容。
面向对象的编程语言是将客观事物看作具有属性和行为(或服务)的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。
1.2面向对象的方法
结构化程序设计思路:自顶向下,逐步求精;其程序结构是按其功能划分为若干个基本模块,这些模块形成一个树状结构;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序,选择和循环3种基本结构组成;其模块化实现的具体方法是使用子程序。
面向对象的方法:首先,它将数据及对数据的操作方法放在一起,作为一个相互依存,不可分离的整体--对象。对同类型对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之箭通过消息进行通信。
1.3基本概念:对象;类;封装;继承;多态性。
1.4面向对象的软件开发
分析OOA;设计OOD;编程OOP;测试OOT;维护OOSM;
1.5程序开发的基本概念
源程序->(翻译,加工)->目标程序
翻译程序完成翻译加工,有三种:汇编程序,编译程序,解释程序;
完整过程:程序设计->程序编辑(源程序 *.cpp)->程序编译(*.obj)->程序连接(.exe)->程序运行
二.简单程序设计
1.C++主要两个特点:尽量兼容C;支持面向对象的方法。 //所以C代码不需要修改就可以被C++所用。即C++既面向对象,又支持面向过程的程序设计。
2.从最简单的程序程序“hello world“开始学起
程序实例
13 #include<iostream>
14 using namespace std;
15 int main ()
16 {
17 cout<<"Hello world!"<<endl;
18 cout <<"Welcome to C++ !"<<endl;
19 return 0;
20 }
编译:
[hongfuhao@localhost ~]$ g++ -o hello hello.cpp
[hongfuhao@localhost ~]$ ./hello
Hello world!
Welcome to C++ !
以上是一个简单的程序及运行结果。
与C语言中类似,main是主函数名,函数体用大括号包围。函数是C++程序中最小的功能单位。C++程序中,必须有且只有一个名为main的函数表示下程序执行的开始点。
cout是一个输出流对象,是C++系统预定义的对象,包含许多有用的输出功能,类比C中的printf;输出操作由<<来表达,其作用是将紧随其后的双引号中的字符串输出到标准输出上;endl表示一个换行符。
3.标识符的构成规则
(1)以大小写字母或下划线开始;
(2)以大小写字母,下划线,或数字0-9组成;
(3)大小写字母代表不同字符;
(4)不能是C++关键字
4.基本数据类型
4.1与C语言中类比是一样的bool,char,signed char,unsigned char,short,int,long,(signed unsigned);float,double,long double.
4.2常量:整型常量,字型常量,字符常量,字符串常量,布尔型常量false和true。
4.3变量的声明
变量在使用之前需要声明其类型和名称。//C++中有字符串常量,没有字符串变量。
4.4变量的存储类型
auto存储类型:采用堆栈方式分配内存空间,属于暂时性存储,其存储空间可以被若干变量多次覆盖使用。
register存储类型:存放在通用寄存器中。
extern存储类型:在所有函数和程序段中都可以使用。
static类型:在内存中以固定地址存放的,整个程序运行期间都有效。
4.5符号常量 :符号常量声明时一定要赋初值,在程序中间不能改变其值。
4.6运算符:算术运算符,关系运算符,逻辑运算符。
逻辑运算真值表
a | b | !a | a&&b | a||b |
true | true | false | true | true |
true | false | false | false | true |
false | true | true | false | true |
false | false | true | false | false |
表达式1?表达式2:表达式3
//表达式1必须是bool类型,表达式2.3可以是任何类型,且类型可以不同。
4.8位运算(1)按位与&(2)按位或|(3)按位异或^(4)按位取反~(5)移位<<左移>>右移
4.9运算符优先级
4.10混合运算时数据类型转换:
隐含转换
低类型转换为高类型,类型高低顺序如下:
char ->short-> int-> unsigned-> long-> unsigned long-> float-> double
显式转换
类型说明符 (表达式) //C++风格
(类型说明符)表达式 //C语言风格
5.数据的输入与输出
5.1I/O流:标准输入cin;标准输出cout
5.2预定义的插入符合提取符:<<和>>
for example:
cout<<"a+b"<<a+b;
for example:
int a,b;
cin>>a>>b;
5.3简单的I/O格式控制
dec十进制表示;hex十六进制表示;oct八进制表示;ws提取空白符;endl插入换行符,并刷新流;ends插入空字符;setsprecision(int)设置浮点数的小数位数;setw(int)设置域宽;
for example:输出浮点数3.1415并换行,设置域宽为5个字符,小数点后保留两位有效数字。
cout<<set(5)<<setprecision(3)<<3.1415<<endl;
6基本控制结构
6.1选择结构:用if语句实现
for example:输入一个年份,判断是否为闰年.
13 #include <iostream>
14 using namespace std;
15 int main()
16 {
17 int year;
18 bool isLeapYear;
19 cout <<"Enter the year:";
20 cin>>year;
21 isLeapYear=((year%4==0&&year%100!=0)||(year%400==0));
22 if(isLeapYear)
23 cout<<year<<"is a leap year"<<endl;
24 else
25 cout<<year<<"is not a leap year"<<endl;
26 return 0;
27 }
运行:
[hongfuhao@localhost ~]$ g++ 2_2.cpp
[hongfuhao@localhost ~]$ ./a
a.out app/
[hongfuhao@localhost ~]$ ./a.out
Enter the year:1700
1700is not a leap year
[hongfuhao@localhost ~]$ ./a.out
Enter the year:2000
2000is a leap year
多重选择结构:1if语句嵌套2if...elseif语句
3switch语句
switch (表达式)
{
case 表达式1:语句1;
case 表达式2:语句2;
case 表达式3:语句3;
default: 语句n+1
}