第一章 引论
这一章非常重要,讲了面向对象的核心概念——数据封装、继承、多态性
数据封装机制用来实现信息隐藏
继承实现了一般和特殊的关系,解决了软件的重用性和扩充性问题
多态性赋予程序更多的灵活性
第二章 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() 就不知道是调用哪一个函数了
分享到:
相关推荐
面向对象程序设计与c++语言 朱战立 面向对象程序设计与c++语言 朱战立
《面向对象程序设计:C++语言描述(原书第2版)》内容丰富,结构合理,写作风格严谨,深刻地论述了c++语言的面向对象编程的各种技术,主要内容包括:面向对象编程方法、c++语言的各种特性、stl、c++输入/输出流、mfc等。...
面向对象的程序设计语言——C++ 面向对象的程序设计语言——C++ 面向对象的程序设计语言——C++ 面向对象的程序设计语言——C++
同《面向对象程序设计(C++语言描述)》马石安、魏文平编著教材同步 源于科任老师,在此备份,需要的可看看
面向对象程序设计语言C++教案揣锦华 较详细的讲解和例子
面向对象程序设计与C++语言,适合初学者,值得细细看,会有一定提高.
c++面向对象程序设计语言重点难点复习题及答案-整理.pdf
面向对象的程序设计语言——C++课件 第二版(陈志泊 )
面向对象程序设计语言C++第2版资源,是这本书的全部资源包括例题源文件
面向对象程序设计与C++语言习题答案(朱战立版).doc
面向对象程序设计—C++语言描述 第二版 中文版,扫描清晰,内容完整,是学习C++的良好教材。
c++面向对象程序设计语言重点难点复习题及答案。
这是《面向对象程序设计—C++语言描述》高清文字版,中文版
面向对象程序设计教程(C++语言描述) ppt课件
1.结构化程序设计方法与面向对象程序设计方法的各自特点、区别和相互联系。 2.面本向对象的程序设计方法中的有关概念,如类、对象、封装、继承、消息和多态性等。 3.C++程序的基本组成和框架结构。 4.掌握C++...
本书深刻论述了C++语言的面向对象编程的各种技术,主要内容包括:面向对象编程方法、C++语言的各种特性、STL、C++输入/输出流、MFC等。
面向对象程序设计与C++语言 (第二版) 杨庚等编.pdf