侯捷c++课程笔记 (面向对象高级编程)

本文详细介绍了C++中的类模板、防卫式声明、构造函数的使用,包括构造函数的初始化列表。此外,讨论了重载函数的概念,指出如何通过const关键字区分函数是否修改数据。还强调了使用引用参数以提高效率,并解释了友元函数的作用。最后,阐述了操作符重载的原理,成员函数与全局函数的差异,以及返回值类型的选择。

1头文件模板

#ifndef __COMPLEX__ //如果没有定义过__COMPLEX__

#define __COMPLEX__//定义出来

...

#endif

防卫式声明 避免重复定义

class comlex

{

public:

        ...

private:

        ...

};

public(公共可访问)可以和private(只有自己和自己的友元可访问)交插定义。

complex (double r = 0,double i = 0):re (r), im (i){ }//也可以直接写在{}里,但那样更相当于是赋值,而非初始化。

构造函数用初始列表赋值比较规范。(因为这是构造函数独有的),且效率高。

2重载函数本质是编译器给相同名字的函数起了不同的名字:

  3 class类内的函数分为两种,一种是会改变数据的,一种是不会改变数据的,不会改变数据的要加const (常量) 如上的real(),imag()。  如下图右中,const修饰了构造函数,但如果real(),imag()函数没用const修饰,则编译器会以为你想改变数据不能变的对象c1,继而报错。

 尽量参数都传引用(本质是指针,4个字节),尽量不要传值,效率低(c++最大的优点就是效率)。不想影响引用可以加const修饰 。(当然特殊情况:不能返回局部变量的引用。)

使用友元函数直接调用类里封装的数据比调用类里公开的函数来获取数据要快一点。

4 相同class的各个对象互为友元:

 如上图:c2直接调用了c1的封装内数据。

5 操作符重载:

编译器会把操作符作用于左值,本质是:

成员重载操作符函数中this指针是隐藏的, 但this不能写,写了会报错。

全局重载操作符函数不含this指针, 下图就必须return by value,全局函数返回值返回的是临时对象 类名 ()   其实匿名函数也是如此,都是类名 (), 进行到下一行就不见了

 重载操作符函数可以写为类内成员函数,也可以写为非成员函数,但比如<< 等特殊操作符,只能写全局函数(黑马里的老师这里讲的不太对),重载操作符函数的参数顺序就是左值右值,如下图,cout是ostream类的一个对象  os且传进函数的时候不可以加const,因为调用这个函数时,把任何东西输出都会改变cout的状态,这是函数底层的原因。

 

参考资源链接:[侯捷C++课程PPT与代码资源下载](https://wenku.youkuaiyun.com/doc/88p7rbg1mc?utm_source=wenku_answer2doc_content) 侯捷C++课程通过丰富的PPT和实践代码示例,为学习者提供了一条清晰的学习路径,特别是在面向对象编程方面。首先,侯捷在PPT中深入讲解了面向对象编程的基本概念,包括类的定义、对象的创建、构造函数和析构函数等,这些概念是理解面向对象编程的基石。 紧接着,课程中的代码示例让学习者能够看到面向对象特性在实际编程中的应用。例如,在类和对象的实践代码中,会展示如何封装数据和函数、实现继承以及多态性等。这些代码示例不仅限于理论上的解释,更侧重于实际应用,帮助学习者理解何时以及如何使用面向对象的设计原则来解决问题。 此外,侯捷C++课程还会提供一些高级主题的代码示例,如设计模式的实现,这些高级主题能够帮助学习者构建更为复杂和优雅的软件系统。通过这些材料,学习者可以从基础到进阶逐步建立起扎实的面向对象编程能力。 为了更好地利用这些资源,建议学习者先通过PPT内容获得理论基础,然后通过查看和运行课程中的代码示例来加深理解。在实际操作过程中,理解每个类、方法和对象是如何协作,以及它们是如何在程序中发挥作用的。此外,还可以尝试修改代码示例,以测试自己对面向对象概念的理解,并将所学知识应用于新的问题解决场景中。 通过这种理论与实践相结合的学习方法,侯捷C++课程的PPT和代码示例可以有效地帮助学习者掌握面向对象编程的核心思想,并能够将这些概念应用到实际的编程任务中去。 参考资源链接:[侯捷C++课程PPT与代码资源下载](https://wenku.youkuaiyun.com/doc/88p7rbg1mc?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值