C++类机制认识的螺旋上升过程

本文深入探讨C++的类机制,包括数据封装、成员函数、访问权限、静态成员和友元函数。介绍了内联函数、常成员函数、对象指针的使用,以及操作符重载和流操作符。强调了访问控制的重要性,区分了public和private,并讨论了静态成员的声明和定义。同时,提到了友元函数在保持封装性的同时提供特殊访问权的特性。
摘要由CSDN通过智能技术生成

C++类机制太有名了,程序员应该都会喜欢这个设计。从最基本的说,类是封装了数据和操作。再不精确地说,定义了一个类,使用它可以在不需要知道内部如何实现的情况下,拿到一坨代码,就能很快地放入参数并使用。

以上是初次的直观认识,接下来探讨细节,如声明和定义、访问权限、创建对象。关于成员函数:定义可以在类内也可以在类外。定义在类内就是默认声明内联(内联就是性能优化,不过据说是不超过1行的函数才行),定义在类外要加上类名名空间(如void Date::set())表示该函数属于Date类。常成员函数不能改变对象的值,在声明和定义后加const(void func()const;)。重载只要参数不同。关于对象指针:进行对象的访问时,用对象名的话类似ObjectName.func(),或者用对象指针ObjectPointer->func()或者(*ObjectPointer).func(),其实最后一个就是先拿到对象。关于操作符:操作符的其实也是函数的形式。把函数名换成operator操作符(类似operator+)就可以重载自己的操作符。另外注意前增量返回引用,后增量返回临时变量,传参也不一样。流操作符返回引用,返回值类型是ostream。

接下来有关访问控制。由于类起到一个封装的作用,有些数据对外是看不见的,但是类内部函数肯定得看得见,不然没法处理。由此产生的各种情形,类机制中需要引入精确的访问控制。这里谈访问控制,实际上和之前文章提到的程序控制又有交集了。public下的是公有,用户可见。private下的是私有,类内部实现用,外部不可见。

关于静态成员。静态数据成员在类内声明,类外定义,防止多次定义。此时静态数据成员是属于整个类的,只创建一次,程序结束时销毁。操作静态数据成员要使用静态成员函数。静态成员函数可以不捆绑具体对象的情况下访问静态数据成员,在捆绑了具体对象的情况下可以访问私有成员。定义和成员函数类似,用static修饰。

关于友元函数。将一个普通的函数声明为类的友元函数,可以在该函数内部直接访问类的私有数据。声明方法是在类定义处添加该函数并用friend声明。友元函数在一定程度上是破坏了类的封装,所以使用要谨慎,要符合实际情景。关于操作符重载的友元函数使用,[]和=用成员函数形式,其他都用友元函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值