20201027_C++_类的引入_访问控制_程序结构_重载_指针_引用_观看韦东山课程笔记

8 篇文章 0 订阅
7 篇文章 1 订阅

参考书籍《C++程序设计教程》第二版 钱能  //篇幅较少 讲的基本到位 快速学习的话可以看它

参考书籍《C++ primer plus》第六版 中文版 //篇幅较大,讲的非常细,有很多时间,想掌握的更细

一、类的引入

1.面向对象(Object Oriented Programming 简写 OOP)程序设计的三大特点:1.封装 2.继承 3.多态

二、访问控制

1.class是对struct的扩展,含有数据成员,含有成员函数。

2.如果权限不写public就会默认权限是private

3.访问控制的三中权限:public(可以在类外面使用)、protected、private(只供类内部的函数使用)

4.C++规范里类的名称首字母要大写

5.对于private权限的数据成员不能在类外赋值,可以在类内写public权限的函数来设置数据成员

6.对于不想让用户随意设置的数据程序,设置权限为private是很有必要的

7.理解用类别定义对象的概念 this表示当前对像,this->age表示当前对象的age属性

8.C/C++里面有个就近原则,变量离哪个定义近就是代表哪一个定义

三、程序结构

1.有人关心编写各种子程序,有人关心在main函数怎么去调用。则*.cpp文件为具体的函数实现,*.h中声明在*.cpp中的函数(关心在main函数里调用的人在.h中来找接口)

2.当程序结构比较大时,需要设置各个文件之间的依赖关系,则需要编写makefile文件,可以使程序编译时更便捷,程序开发者更好的掌控程序编译的过程和需要链接的各个库文件。

3.makefile $@表示当前工程对象 $^表示当前所有的依赖 $<表示第一个依赖 -o表示输出 -c

-g可执行程序包含调试信息,目的是为了给GBD工具调试程序使用
-o指定输出文件名,如不指定-o,则默认输出文件名为a.out
-c

只编译不链接,产生.o文件,不产生可执行文件

-C将当前的目录切换到指定目录中

-f

编译用其他文件名书写的Makefile

-D

执行gcc过程中给程序中添加宏定义

-Wall编译后显示所有警告
-L指定链接的第三方库所在的目录
-nostelib

不连接系统的标准启动文件和标准库文件,只把指定的文件传递给链接器

4.当不同的子函数源文件有相同名称的函数,相同的参数,和相同的返回值。在实际的工程实践中很容易出现这种情况。不同的程序员负责某一模块,很可能写出同样的函数名,同样的参数和返回值的函数,这种情况该如何处理。

引入所谓的命名空间,将整个程序用namespace A{},括起来,在调用时写 A::函数名

即将函数放入不同的命名空间,在调用时指定这个函数属于哪一个命名空间。

5.如果在源文件里指定了命名空间,那么在main函数里调用时需要指定命名空间(即使名字,参数,返回值不一样也需要指定命名空间)

6.指定命名空间的方法。第一种是在新建对象时就指明是那个命名空间里的类(这种方法比较繁琐,因为在每一次新建对象时都需要指定命名空间,但是在不同源文件中的函数名,参数,返回值都相同的情况只能用这用方法指定);第二种是在main函数文件开始就指定好是哪个类 例如: using namespace A::person;using namespace C::dog 这句话是说如果新建person对像就是A命名空间的person类,如果新建dog对像就是C命名空间的dog类。

global namespace是main文件里,但不是在main函数里的空间

using A::Person;

/* 把A::Person放入global namespace, 以后可以使用Person来表示A::Person */

using C::Dog;

/* 把C::Dog放入global namespace, 以后可以使用Dog来表示C::Dog */

或者:

local namespace是main文件里,而且是在main函数里的空间

/* local namespace */

//using A::Person;

//using C::Dog;

或者:

using namespace A;

using namespace C;

/**这种是把A空间和C空间内定义的所有函数和所有类都导入进来,这样在新建对象或者调用函数时,只要这个对像或者函数名字,参数,返回值不一样,就可以在使用时直接使用而不需要再重复进行空间指定,若是在两个命名空间的函数或者类的名字,参数,返回值都一样,那么使用时就需要再次指明命名空间**/

四、重载_指针_引用

1.重载是针对函数名相同,参数不一样的情况,这种情况怎么分辨要调用哪一个函数。参数不同:参数类型不一样或者参数的顺序不一样或者数量不一样。在调用函数时可以根据参数的不一样而重载的函数。不可以根据返回值不同来重载函数(编译器无法辨别你是选择的哪个函数)。

2.如果想在调用的函数修改传进入变量的值需要传入该变量的地址 &a,在函数定义时的形参是*a

3.指针如果使用不当会引起比较大的麻烦,希望在程序中避免指针的使用,避免指针的使用同时想真正修改变量的值,这时我们可以使用C++中的引用机制。如果b是a的引用,实际上b就是a的别名,对b的操作也是对a的操作。C++里的引用就是避免指针的使用。因为如果不恰当的使用指针会引起非常大的破坏。

4.引用如果定义时没有被赋值会编译出错,因为引用实际上就是别名,没有赋值也就是不知道是谁的别名,所以会出错。则定义引用时就得初始化这个引用。

5.引用是别名,所以引用不能赋值一个具体的数。必须是赋值某个变量。从而达到修改引用来修改这个变量的目的。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值