C++第二章
引用:
独立引用:int &pm=m; 这个时候,pm和m是
同一个内存单元,可以是变量,也可以是常量。
const flaot &rz=1.0
传值:单向值传递:void func(int num)
void main(){ int value=5; func(value) }【不改
变实参的值】
传递指针: void func(int *pnum) void
main(){ int value=5; func(&value)} 【指针
pnum指向了value,为同一个空间,所以可以
改变实参的值】
传递引用: void func(int &pnum); voiud
main(){int value=5; func(value);}【就是一个独
立引用,同样可以改变实参的值】
返回引用: int &f(int *pint){renturn *pint};
vid mian(){int a=10,b; b=f(&a)*5;f(&a)=
88;} 结果: b=50 a=88;
抽象:(是相对的,不是绝对的)
类声明: class classname{数据成员; 函数成
员;};类内: 在class函数内,类外:在class函
数外; privete 和 protected 都是私有成员,
不可被类外函数访问; public是共有成员,可以
被类外函数访问;
类类型:函数参数: ①:counter func(
counter obj) void main(){counter b2=
func(b1)} b1指向obj,但是obj与b1的空间不一
样,
②:对象引用: void func2(counter &obj)
void main(){func2(b1)} b1和obj指向同一块空
间。
③:对象指针:void func3(counter *obj)
void main(){func3(&b1)} 同样,obj和b1指向
同一块空间
对象数组:访问形式和struct 结构体一样。
初始化: point(){x=0;y=0;} point(float a){x=
a;y=0} point(float a, float b){x=a,y=b;} 构造
函数对其初始化 。 point array[3]={point(3,4),
5} 第一个元素调用 point(flaot a,float b) 第
二个元素5 调用函数 point (floata). 第三个函数
元素为空,调用point().
对象的指针加减:
eg: counter array[3]={5,6,7} counter *p=
array; (同理于struct 结构体),首先是指向首
地址,arrray[0]. 随着 p++, 指针的指向发生改
变!
静态成员:静态数据成员+静态成员函
数
特征:①:共享数据(静态成员是属于类,而非
一个对象!)②:静态数据成员未被定义的时
候,默认为0; 也可声明为 privated 和 public
eg: class counter{static int count} void
main(){counter a,b; } 则a,b这两个类都共享
count这个 数据。
构造函数:与类同名+没有返回类型+
可以有参数+自动调用,完成对象初始
化的工作
初始化方式:①:clock(int h, int m ,int s){
Hour=h; Minute=m; Second=s} ②:clock(
int h, int m, int s):Hour(h), Minute(m),
Second(s);
在main函数中的初始化:①:counter1(8) 或
者 counter2=9【这种方式是对于一个参数】;
②:clock1(3,5,1) 【这种可以有多个参数】 注
意: clock2();这种不可以,因为【若构造函数
存在参数,不允许对象无对应实参。】
重载构造函数;运用道理同构造函数
缺省参数的构造函数
clock(int h=0, int m=0,int s=0)【运用道理仍
同于缺省的构造函数】
对于没有设置构造函数的,系统自动生成无参的
构造函数且不做仍和任何工作。
析构函数:无返回类型+无参数+对象
的生存期结束时自动调用,用于释放
空间;形式:~cstring
同理于构造函数,若无显式说明,系统自动生成
且不做任何工作。
注意:每创建一个新的对象,当其生存期结束后
都会自动调用析构函数。
若对象开辟了一个空间且存入了数据,没有显式
的写析构函数的时候,当对象被释放时,当该空
间不会被释放,这个时候该空间就用不了
拷贝构造函数(注意一个浅拷贝即位
拷贝)
功能:将同类的对象引用作为参数,将对象中的
数据成员逐一赋值给新对象。
形式;point(point &obj)注意和类对象最为函数
参数的形式: counter func(counter obj)
调用方式: point obj2(obj1)或 point obj3=
obj2;(类似于struct 中的p=p1);
若没有显式的说明拷贝构造函数,则系统会自动
生成一个,且做的式位拷贝(对象指向同一块空
间,这个时候析构的话就会出现一个空间被释放
两次!)
注意点:
在类外进行函数的说明,一定要加上作用域符
类的访问:对象名.数据成员(和struct结构体访
问一样,同理于指针)
new开辟的空间,同样可用于class。eg:
Baseclass *c1=new Baseclass();【新类】
private+public+protected
①:可以按任意顺序出现 ②:public
protected private 可以多次出现 ③:一个成员
只可以有一种访问属性!
评论0
最新资源