【C++】:面向对象高级编程(1):类的一些通用法则

–本文来自侯捷老师的C++面向对象高级编程和自己的理解形成的笔记

若有错误,欢迎指正

头文件引入时,调用系统的用 <>,使用自己的用 " "
C++的类一般分为两种,一种是带指针的,一种是不带指针的。

自定义类较为正规的写法如下:
在这里插入图片描述

此种做法的意义在于防止被反复调用以及先后调用时出错。只有当该类未被定义的时候,才会调用此文件去定义这个类。

我们需要尽量将成员函数声明为内联(inline)函数,尽管编译器对某些函数的处理不会按照内联函数来,但还是能提前处理一个就提前处理一个。

此外,在构造函数赋值的时候,尽量使用 “:”,初值列的格式。
在这里插入图片描述
此种做法会在初始化阶段给值,效率会高上那么一点。
还有一个原因是当含有成员类的时候,则必须采用这种方法去初始化。同时,类中的const常量,也只能用这种方式去初始化。

**此外,如果已经拥有了带默认值的构造函数,则不能额外再写一个空的构造函数。**因为这样会让编译器无法确定在没有参数的时候,具体调用哪一个函数。

构造函数也是可以放在private里面的,单例模式就使用了这种方法。

不改变数据的成员函数一定要加const,这是为了将来的使用者可以正确调用该方法。

能传引用的地方一定要传引用。

这里正好解释一下传值调用,传指针调用和传引用调用的区别:

(1)传值调用: 传值调用的时候,函数参数压栈的是参数的副本,是变量的拷贝。 因此任何的修改都仅仅作用在副本上,不会改变原本变量的值。但也因为拷贝这个操作,会降低传递效率。

(2)传指针调用: 本质上也是一种传值调用,只不过传递的是地址值,压栈的是指针的副本。 好处在于可以少开辟一些空间。比如值传递64位下传递一个long值需要8bit,但是传指针只需要地址空间长度4bit。除此之外,还可以通过解指针操作去改变变量。

(3)传引用调用: **传递的就是实参本身,而不是实参的一个拷贝。**效率高。并且形参的修改就是实参的修改,也因此需要善用const

此外,函数返回值的传递也尽量使用引用。
该方式最大的好处在于不会产生返回值的副本。
只要不开辟新的空间就可以将返回值设成引用返回。
比如重载"+=“一般可以,因为会存放到左边的操作数的地址里。
而重载”+"不可以使用引用,因为需要一块新的空间来存放结果。

友元函数可以拿到private里面的数据。

所有的成员函数都有一个隐藏指针this,this为调用该函数的对象的地址。

以上为类中需要注意的一些操作和原因。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值