C++面向对象第一周笔记<Boolan>
来源:互联网 发布:法国大革命 评价 知乎 编辑:程序博客网 时间:2024/06/07 23:11
C++编程简介
C++的历史:B语言(1969年) -> C语言(1972年) -> C++(1983年)(最早叫C with class);
学习C++就是学习C++语言和C++标准库;
单一class的设计称为:Object Based(基于对象);
多class关联起来称为:Object Oriented(面向对象);
头文件与类的声明
宏的优缺点:
{优点:
避免了意义模糊的数字出现,使得程序语义流畅清晰;
可以方便的进行参数的调整与修改;
提高了程序的执行效率,由于使用了预编译器进行值代替,并不需要为这些常量分配存储空间,所以执行效率较高。
缺点:
预编译语句仅仅是简单的值代替,缺乏类型的检测机制。这样预处理语句就不能享受C++严格的类型检查的好处,从而可能成为引发一系列错误的隐患。};
是否inline(内联)是编译器所决定的,你只能建议编译器取inline,例如过于复杂的函数编译器没能力帮你内联。
access level(访问级别)
public:公开的,可以被外界看到的,函数部分可以被外界使用的;
private:内部的,私有的,只有class内才能看到与拥有,一般为封装的数据,有时候也会有函数。
constructor(ctor,构造函数)
如果想要创建一个对象,构造函数会被自动调用;
构造函数名称与类名称相同,才可以叫做构造函数;
可以拥有参数,参数可以有默认值(default argument );
没有返回类型;
可以在传参后加“:”来设置initialization list(初始列,初值列),当然也可以在函数body中设置,但是在initializa list(初始列,初值列)中更优,因为她是在程序初始化时候工作,在时间点上要比body中提前,效率更高;
不可能在程序中直接调运构造函数,因为没有这样的语法,但是你可以直接创建对象,构造函数会自动调用;
与构造函数对应的是析构函数。
ctor(构造函数)可以有很多歌 - overloading(重构)
同一个函数名称有一个以上的函数叫做函数重载;
看似名称相同的两个函数,实际上在编译器编码时,会根据传入参数,返回值等一系列的数据来区分两个同名的函数,也就是说实际上在编译器看来这两个函数还是不同名的;
如果创建一个对象时,编译器发现两个重构函数都可以使用时,她会分不清选择用哪个用哪个而产生冲突,我们要避免这种情况发生。
constructor(ctor,构造函数)被放在private区确实时可以的。
const member functions(常量成员函数)
double real()const{return re;};
在传参()与函数body{}间,间const,表示不能改变数据内容;
class内的数据分为会被改变内容和不会改变内容的两种,确认不会改变数据内容的参数,马上加上const;
参数传递:pass by value VS. pass by reference(to const)
by value :传数据;
by reference:传引用,引用相当于指针,传的是数据的地址;
能传引用尽量传引用,传不了引用再传数据。如果传引用只是传递参数而非改参数,我们可以在引用前加const。
return返回值传递也是同样道理。
friend(友元)
在private中的封装数据和函数,friend可以直接读取,但是这打破了封装!
相同class的各个object互为friend(友元);
小结下:
数据放在private中;
参数传递尽可能用reference,要不要加const看情况;
返回值也尽可能的用reference;
在body中的函数能加const的就要加,能加不加有漏洞;
构造函数的特殊的语法叫initialization list,尽量用;
什么情况下可以return by reference?
在传出修改参数本身时return 引用;
在传出新建参数时,传出value;
- C++面向对象第一周笔记<Boolan>
- boolan面向对象编程 第一周笔记
- 【Boolan】C++面向对象编程培训第一周笔记
- Boolan C++面向对象高级编程(上)第一周笔记
- C++面向对象第四周笔记<Boolan>
- Boolan第一周---C++面向对象高级编程(上)
- Swift第一周~ Boolan笔记
- [Boolan] C++第一周学习笔记
- Boolan IOS课程第一周 笔记
- Boolan* C++课程第一周笔记
- Boolan C++设计模式 第一周笔记
- Boolan C++面向对象高级编程(上)第一周作业
- C++面向对象第二周笔记<Boolan>
- C++面向对象第三周笔记<Boolan>
- Boolan C++面向对象高级编程(下)第四周笔记
- [Boolan]第一周学习笔记——rico风
- C++ 开发工程师 第一周笔记 boolan.com
- Boolan STL与泛型编程 第一周笔记
- Linux系统putty的安装使用教程
- 题目1077:最大序列和
- JDK7新特性_JDK7的六个新特性
- SpriteKit代码动态调整sks文件中粒子的颜色
- 论文阅读《DeNet: Scalable Real-time Object Detection with Directed Sparse Sampling》
- C++面向对象第一周笔记<Boolan>
- 动态代理详解(一)应用示例
- 线性代数入门知识5(二次型)
- 计算图(computational graph)角度看BP(back propagation)算法
- 题目1078:二叉树遍历
- TCP/IP核心协议之传输层协议
- 安卓手机高通平台开发常用命令
- Boolean.getBoolean(String name)方法分析
- TensorFlow实战12:实现基于LSTM的语言模型