C++精讲

来源:互联网 发布:为什么打开软件会闪退 编辑:程序博客网 时间:2024/06/11 01:57

编译环境介绍:本人使用的是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 !aa&&ba||btruetruefalsetruetruetruefalsefalsefalsetruefalsetruetruefalsetruefalsefalsetruefalsefalse4.7条件运算符

表达式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

}

0 0
原创粉丝点击