侯捷《C++面向对象高级编程》1-6节笔记

本文探讨C++编程中的关键概念,包括类的分类、预编译指令、构造函数优化、inline函数使用、参数传递方式、const正确性、友元、局部变量引用返回及特殊运算符重载技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.总体来说,C++的类分为两大类,基于对象(object based)、面向对象(object oriented),区别是前者单一类,后者包含多种类(继承、组合、指派等)

 

2.类声明文件(.h)写上预编译语句,防止重复声明

有些IDE在.h文件时自带了这些语句,如CodeBlocks

#ifndef COMPLEX_H_INCLUDED
#define COMPLEX_H_INCLUDED

#endif // COMPLEX_H_INCLUDED

3.构造函数尽量使用函数参数列表初始化,效率比赋值效率高

参数列表初始化:

Complex(double r = 0, double i = 0):re(r), im(i){}

普通赋值初始化:

    Complex(double r = 0, double i = 0)
    {
        re = r;
        im = i;
    }

 

4.inline函数,通常函数体简单,但是是不是inline要看编译器,并不是写上inline实际就是inline,在类内直接定义的函数隐式inline,但是还是要看编译器,inline函数在类定义文件(.h)内一同定义

 

5.函数参数、返回值尽可能pass by reference(to const)而不要 pass by value,原因在传值会把变量整个拷贝到函数栈,耗时耗内存,引用在根本上是传地址,看上去是变量的别名,另外在确定函数不会更改变量值的情况下,加上const

 

6.明确函数会不会更改私有数据,如果不会,请务必写上const,防止今后定义const对象时,调用接口函数失败

    double real() const { return re; }
    double imag() const { return im; }

7.相同class的各个object互为友元

 

8.函数内部定义的局部变量不能作为引用返回,因为在函数结束之后局部变量的内存被释放,对其引用会相当于引用一个不存在的对象,会报错,除了这种情况外,尽量返回引用类型

 

9.重载某些特殊类型运算符,如"<<",函数返回类型不能为空,考虑到用户连续操作,否则只能一次操作预定的对象数目,且不能设计为成员函数类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值