面向对象程序设计C++学习笔记(1)

一、C++的初步认识

第一周
1、简单介绍“类”
在C++中把一组数据和有权调用这些数据的函数封装在一起,组成一种称为“类”的数据结构。也就是说,一个类是由一批数据以及对其操作的函数组成的。class是声明“类”类型时必须使用的关键字,如结构体中的struct。
类可以体现数据的封装性和信息隐蔽。
类中数据和函数可以分为两大类:private(私有的)和public(共有的)。
具有”类“类型的变量称为“对象”。
2、C++的输入输出
cin:标准输入。与“>>“一起使用。
cout:标准输出。与”<<“一起使用。
cerr:标准出错输出。
clog:ceer的缓冲形式。
换行:cout<<"\n";或者cout<<endl;
3、const的用法
a、定义常变量
const int MAX_VAL=23;
b、定义常量指针
注意:1、不可通过常量指针修改其指向的内容,但可以修改其指向的对象。
int n,m;
const int * p = &n;
*p = 5; //编译出错
p = &m; //ok
2、不能把常量指针赋值给非常量指针,但是反过来可以。因为前者可以通过改变非常量指针的值修改常量指针指向的内容,这是不允许的。
const int *p1;
int *p2;
p2 = p1;//error
定义常量指针的好处:函数参数为常量指针时,可避免函数内部不小心改变参数指针所指向的内容。
c、定义常引用
不能通过常引用修改其引用的变量。
const int & r = n;
r = 5;//error
n = 4;//ok
4、函数原型声明
如:int max(int x,int y);
int max(int,int);
编译时只检查参数类型,不检查参数名。
5、函数的重载
C++允许在同一作用域中用同一函数名定义多个函数,其参数个数或参数类型不相同,实现不同的功能。函数重载即一个函数名多用。
注意:重载函数的参数个数或类型必须至少有一个不同,函数返回值类型可以相同也可以不同。
6、函数模板
所谓函数模板,实际上是建立一个通用函数,其函数类型和参数类型不具体指定,用一个虚拟的类型来代表。(参数个数相同)
定义函数模板的一般形式:template<typename T>template<class T>
7、有默认参数的函数
a、有函数声明在函数声明中给出默认值,无函数声明在函数定义时给出。
b、指定默认值的参数必须放在形参列表的最右端。
c、一个函数不能既作为重载函数,又作为有默认参数的函数。会出现二义性错误。
8、内置函数(内嵌/内联函数)
方法:在函数首行的左端加一个关键字inline即可。
指定函数为内置函数后,编译系统在遇到函数调用时,就用函数体的代码代替函数调用,同时将实参代替形参。
使用内置函数可以节省运行时间,但却增加了目标程序的长度。因此只有对于规模很小且使用频繁你的函数,才可大大提高运行速度。
9、变量的引用(又称别名)
注意:(1) int a; **int & r=a;像这样对变量声明(不是定义一个变量r)**一个引用,并不另开辟存储单元,a和r都代表同一变量单元。
(2)引用并不是一种独立的数据类型,它必须与某一类型的数据相联系。**在声明一个引用时,必须同时使之初始化,即声明它所代表哪一个变量。**可以用一个变量初始化引用,也可以用另一个引用初始该引用。
(3)引用在初始化后不能再被重新声明为另一变量的别名。
(4) 把变量的引用作为函数形参就可以改变实参的值。如void swap(int & a,int & b){ }; (函数定义)swap(a,b);(函数引用)。
##对引用的进一步说明:
a、不能建立void类型的引用。因为void的含义是无类型或空类型。只是在语法上相当于一个类型而已。
b、不能建立引用的数组。因为往往数组名只是代表该数组首元素的地址,本身并不是一个占有存储空间的变量。
c、可以将变量的引用的地址赋给一个指针,此时指针指向的是原变量。如int a; int &r=a; int *p=&r;(第一个是引用,第二个是取地址符)但是不能定义指向引用类型的指针。如int & *p=&r;因为引用不是一种独立的数据类型。
d、可以建立指针变量的引用。如int i=5; int p=&i; int * &pt=p;
第二周
10、作用域运算符
::,它能指定所需要的作用域。
float a=13.5;
int main()
{ int a=5;
cout<<a<<endl;//输出的只能是局部变量a的值5
cout<<::a<<endl;//输出的是全局变量a的值13.5
return 0;
}
注意:不能用“::”访问函数中的局部变量。
11、 动态分配/撤销内存的运算符new和delete
在C语言中是利用库函数malloc和free分配和撤销内存空间的。但是使用malloc函数时必须指定需要开辟的内存空间的大小。其调用形式为malloc(size),size是字节数,需要事先求出或用sizeof运算符由系统求出,此外,malloc函数只能从用户处知道应开辟空间的大小而不知道数据的类型,因此无法使其返回的指针指向具体的数据。
C++提供new和delete取代malloc和free。
格式:
new 类型 (初始化值)/[数组元素个数] 注意:用new分配数组空间时不能指定初值。返回值类型为其类型
(指针类型)。
delete [ ] 指针变量;
12、字符串变量
a、定义:用类名string,头文件加上#include,注意不是"string.h"。
b、赋值:string=“Canada”;而使用字符数组时不能这样做。且既可以用字符串常量给字符串变量赋值,也可以用一个字符串变量给另一个字符串变量赋值,字符串变量中字符个数不加"\0"。
c、输入输出:cout<<string1; cin>>string2;
d、运算:!赋值用赋值号string1=string2;!字符串连接用加号;!字符串比较直接用关系运算符==、>、<、!=、>=、<=。
e、字符串数组:数组中每一个元素相当于一个字符串变量,不要求每个字符串元素具有相同的长度,每一个字符串元素中不包括"\0"。

课本:《C++面向对象程序设计(第2版)》 谭浩强 编著

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值