面向对象程序设计语言C++(一)_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > 面向对象程序设计语言C++(一)

面向对象程序设计语言C++(一)

 2010/11/19 9:18:40  langzixin  http://langzixin.javaeye.com  我要评论(0)
  • 摘要:第一章引论这一章非常重要,讲了面向对象的核心概念——数据封装、继承、多态性数据封装机制用来实现信息隐藏继承实现了一般和特殊的关系,解决了软件的重用性和扩充性问题多态性赋予程序更多的灵活性第二章C++语言与C语言的不同1、动态存储分配和释放存储空间C(malloc、free)——>C++(new、delete)运算符new用于内存分配的使用形式type*p;p=newtype;type是一个数据类型名;p是指向该数据类型的指针;new从称为堆的一块空闲内存中为程序分配一块内存
  • 标签:面向对象程序设计 C++语言

第一章 引论

?

?? 这一章非常重要,讲了面向对象的核心概念——数据封装、继承、多态性

?

?? 数据封装机制用来实现信息隐藏

?

?? 继承实现了一般和特殊的关系,解决了软件的重用性和扩充性问题

?

?? 多态性赋予程序更多的灵活性

?

第二章 C++语言与C语言的不同

?

?? 1、动态存储分配和释放存储空间

?

?? C(malloc、free) ——>C++(new、delete)

?

?? 运算符new用于内存分配的使用形式

?

?? type *p;

?? p = new type;

??

?? type是一个数据类型名;p是指向该数据类型的指针;new从称为堆的一块空闲内存中为程序分配一块内存,其大小与

?? type类型的数据一样,该地址被存放于指针p中。

?

?? 运算符delete释放内存的方式

?

?? delete p;

?

?? p必须是一个指针,保存new分配的内存的首地址

?

?? 使用new分配的存储空间是没有名字的,只能通过指针来间接的访问它们

?

?? 典型用法:

?

?? 1.动态分配和释放单个数据的存储区

?

??

#include<iostream>?? 
? 
using namespace std;?? 
? 
int main(void) {?? 
?????? 
??? int *p;?? 
??? p = new int;? 
??? if(!p) {?? 
?????????? 
??????? cout<<"allocation failure\n";?? 
??????? return 1;?? 
??? }?? 
??? *p = 20;?? 
??? cout<<*p<<endl;?? 
??? delete p;?? 
??? return 0;?? 
}? 

?

?? 2.用new运算符初始化单个数据的存储区

?

??

#include<iostream>
using namespace std;
int main(void) {
?
?int *p;
?p = new int(99);
?if(!p) {
??
??cout<<"allocation failure\n";
??return 1;
?}
?cout<<*p<<endl;
?delete p;
?return 0;
}

?

??3.动态分配数组的存储空间

?

????

#include<iostream>
using namespace std;
int main(void) {
?
?int i = 1;
?float *p;
?int j = i + 9;
?p = new float[j];
?/*
?动态分配数组要记住的重要一点是不能对之初始化
?指定数组大小的量j,可以是常数、常量或表达式,不能省略
?如果这样定义数组 int a[size] 则size必须为常数或常量,
?因为这里的数组大小在编译时就需确定,而例子中的数组空间
?是程序运行时动态分配的
????????? */
?if(!p) {????????? 
??????????????? 
??cout<<"allocation failure\n";
??return 1;
?}
?for(i = 0; i < 10; i++) {
??
??p[i] = 100 + i;
?}
?for(i = 0; i < 10; i++) {
??
??cout<<p[i]<<" ";
?}
?cout<<endl;
?delete []p;
?return 0;
}

?

?? 2、内联函数

?

?? C语言中使用预处理的带有参数的宏调用来完成简单函数的调用(优点是没有系统的调用开销)

?

?? C++中引入内联函数(inline)

?

?? 例如:inline void function(inta, int b);

?

?? 编译时,在调用function的地方用函数体替换,能够加快代码执行,减少调用开销

?

?? 注意:内联函数体内不允许有循环语句和开关语句?? 函数体一般不宜过长

?

?? 3、const说明符

?

?? 1.说明符号常量

??

?? C语言中使用? #define PI? 3.14???? PI不是真正的符号常量,仅仅是一个字符串,没有类型,不占用存储空间,不能取

?

?? 其地址,只是在预处理时,将它替换为3.14

?

?? C++中使用? const float PI = 3.14 PI是真正的符号常量,有类型,需要占用存储空间(实际上存放在常量数据区),

?

?? 能够取其地址,但不能被无const约束的指针指向,它的值不能被修改

?

?? 2.说明函数的形参

?

?? void fun(const int num);//参数num被认为是常量,只能使用,不能进行修改

?

?? 3.说明指针变量

?

?? 指向常量的指针?? const? type? *p;

?

?? 该类指针可以指向常量,也可以指向变量;只是从指针的角度而言,它所指向的是常量,通过该指针不能修改它所指向的

?

?? 数据;可以不初始化

?

???常指针? type? *const p;

?

?? 把指针本身而不是它指向的对象声明为常量;必须初始化;一旦初始化,不能指向其它数据;可以通过指针修改数据;

?

?? 实际上,该指针只能指向变量,而不能指向真正的常量

?

?? 指向常量的常指针? const? type ?*const? p;

?

?? 必须初始化;该类型指针可以指向常量,也可以指向变量;但通过该指针不能改变它指向的数据;初始化后也不能指向

?

?? 其它数据

?

?? 4、函数原型

?

?? C++需要所有函数具有函数原型,使得C++语言提供更强的类型检查

??

?? (被调用函数的参数类型定义和类型转换;函数的参数个数;函数的返回类型)

?

?? 函数重载:具有相同的函数名,但有不同的参数表和各自的函数体

?

?? 5、缺省参数

?

?? void? func(int num=0){......}

?

?? 两种方式调用func

?

?? func(10);//传递显示的值,则num的初始值为10

?? func();//无对应的实参,则num的初始值为0

?

?? 缺省参数提供了程序员处理更大复杂性的一种方法

?

?? 若有多个参数,则所有取缺省值的参数都必须出现在不取缺省值的参数的右边

?

?? 在使用具有缺省参数的函数时,若该函授名还被重载,要谨防二义性

?

?? 例如:void? func(int? x=1) {......}

??????????? void? func() {......}

?

?? 则函数调用func() 就不知道是调用哪一个函数了??

发表评论
用户名: 匿名