C++面向对象笔记2 (PKU)

内联函数

        函数调用本身是有时间开销的,如果函数本身只有几条语句,执行非常快,而且函数被反复执行很多次,相比之下调用函数本身产生的开销就会显得比较大

        为了减少函数调用的开销,引入 内联函数 机制,编译器处理内联函数时,会将整个函数的代码插入到调用语句处,而不会产生调用函数的语句 

inline int Max(int a, int b) {
    if(a > b) return a;
    else return b;
}

 

函数重载

        一个或多个函数,名字相同,然而参数个数或参数类型不相同,这叫做函数的重载

        函数重载是为了使得函数的命名变得更简单,编译器会根据调用语句中的实参个数和类型判断应该调用哪个函数,但当参数无法适配时,容易导致二义性的错误

函数的缺省参数

        定义函数的时候可以让最右边的连续若干个参数有 缺省值,那么调用函数的时候,若相对应位置不写参数,参数就是缺省值

void func(int x1, int x2 = 2, int x3 = 3) {}

        此时,func(10) 等效为 func(10,2 3)func(10, 8) 等效为 func(10, 8, 3)

        函数参数可缺省的目的在于提高程序的可扩充性;即如果某个写好的函数需要添加新的参数,而原来那些调用该函数的语句,未必需要使用新增的参数,那么为了避免对原来那些函数调用语句的修改,就可以使用缺省参数

 

类和对象

        一个类的成员函数只用一份存在内存中,它被所有对象共享,所以对象的内存分配只考虑它的所有成员变量的大小之和

        对象之间可以用 “=” 赋值,但是不能用 “==”,“!=”,“>”,“<”,“>=”,“<=” 进行比较,除非这些运算符经过了“重载”

        使用类成员变量和成员函数的方法,一种是采用 “对象名.成员名” 的形式,第二种是采用指针:

CRectangle r1, r2;
CRectangle * p1 = &r1;
CRectangle * p2 = &r2;
p1->w = 5;
p2->Init(5, 4);

         第三种方法,使用引用:

CRectangle r2;
CRectangle & rr = r2;
rr.w = 5;
rr.Init(5, 4);

         private:私有成员,只能在成员函数内访问;public:公有成员,可以在任何地方访问

        如果某个成员前面没有上述关键字,则被缺省地认为是私有成员

        在类的成员函数内部,能够访问:1、当前对象的全部属性、函数;2、同类其它对象的全部属性、函数

        在类的成员函数以外的地方,只能访问该类对象的公有成员

        设置私有成员的机制,叫“隐藏”,“隐藏”的目的是强制对成员变量的访问一定要通过成员函数进行,那么以后成员变量的类型等属性修改后,只需要更改成员函数即可,否则所有直接访问成员变量的语句都需要修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值