Debug记录 注:记录自己在编程时犯的各种错误,以便未来快速编程(不痛哭流涕) c++之OOP 1. C风格内存分配与“+1”原则 错误现象:strcpy 报错、输出乱码、字符串末尾出现奇怪字符。 错误根源:忽略了 C 风格字符串的结束符 \0。 ⚠️ Debug 经验: 凡是使用 new char[len] 存储字符串,必须改为 new char[len + 1]。 在填充完字符后,务必手动封口:array[len] = '\0';。 strlen只能处理有\0` 结尾的字符串,否则会因越界而返回错误长度。 2. 构造函数不能 delete! 错误现象:程序刚运行就崩溃(Segmentation Fault)。 错误根源:在构造函数(包括拷贝构造)里使用了 delete。 Debug 经验: 构造函数是对象的“出生”,此时成员指针 array 里是随机垃圾值。绝对不能 delete 随机指针。 拷贝构造函数中,直接 new 即可;只有在 operator=(赋值运算符)中,才需要先 delete 旧内存。 习惯在构造函 ...
运算符重载 对已有的运算符赋予多重含义 使得同一运算符作用于不同数据类型时产生不同类型的行为 实质是函数重载,例如operator+(a,b)和a.operator+(a,b) 运算符可以被重载为普通函数和类的成员函数(better) 重载为普通函数时,参数个数就是实际运算符目数; 重载为成员函数时,参数个数为运算符数-1(由于类名.函数相当于已包含自己,更具体的如,a.operator-(b)) 一个成为函数作用的对象,其余成为函数的实参 编译 目录 范式 约定 普通运算符重载实例 运算符重载为友元 下标运算符的高级重载 目标 希望 实现(可变长度数组的实现 赋值运算符的重载 标准操作 前置:浅拷贝和深拷贝 目标(String类实现) 实现(String类实现) 流运算符的重载 流插入运算符重载 流提取运算符重载 强制类型转换运算符重载 重载自增、自减运算符 实现(自增自减) 范式 1234返回值类型 operator 运算符 (形参表){...} 运算符的操作数称为函数调用的实参 ...
类和对象进阶 目录 🚀构造函数&复制构造函数&析构函数 构造函数 基本范式 隐式转换 复制构造函数 范式 重点:被调用的三种情况 1.当用一个对象去初始化同类的另一个对象 2.类A的对象作为某个函数的参数 3.类A的对象作为某个函数的返回值 析构函数 范式 作用情况 重点:生存周期 静态成员(static 关键字) 范式 其他注意点 实战范例 🚀this指针 🚀封闭类 成员对象 封闭类基本定义 经典的例子 初始化列表 封闭类中构造和析构函数执行顺序 友元 友元函数 友元类 **备注:**此处有重要考点:即构造函数、复制构造函数调用顺序(通常 print 测试) 构造函数&复制构造函数&析构函数 ⚠️ Tips: 不定义任何构造函数(包括复制构造函数)的情况下,类会自动生成 构造函数 函数名与类名相同 类生成必须调用(未设计情况下自动生成无参构造函数,否则不生成,不一定需要自己写) 可以重载(即:一个类可有多个构造函数,编译器自动选择可行且唯一的) 无返回值 (⚠️ ...
类和对象初步 目录 🚀补充知识](#补充知识) 引用& 基本定义 引用作为函数返回值 常引用 const 关键字(避免误改) 基本内容 常量方法(常量成员函数) 常量成员函数的重载 mutable 关键字 加快速度与避免改变 动态内存管理 new 关键字 函数重载 函数的缺省值 🚀类的定义和使用 定义类 定义对象 对象占用的空间 🚀访问对象的成员 🚀类成员的访问权限(private 隐藏机制) 🚀内联成员函数](#内联成员函数) 补充知识 引用& 基本定义 类型名 & 引用名=变量名,引用名相当于变量名的一个别名 定义时必须初始化成某个引用变量 只能引用变量,不能引用常量、const变量和表达式 特殊的,对于const 引用(const 类型名 &) 定义时仍然必须初始化 但是可以绑定到变量、常量、const变量或表达式(此时将延长表达式值的周期) 初始化后便一直引用该变量,不会引用其他变量 1234int a = 10;int b = 20;int &ref = ...
AI实践笔记
未读HW1:使用numpy实现反向传播算法示例 注:以往届 AI 基础作业为资料、采用任务驱动型方法进行学习 作业内容: 阅读并理解代码 修改 np_mnist_template.py,更改 loss 函数、网络结构、激活函数、完成训练 MLP (多层感知机,Multilayer Perception)网络以识别手写数字 MNIST(modified national institute of standards and technology)数据集 代码理解 numpy 数值调用库(相当于#include) 1import numpy as np 使用np.array以支持矢量化运算如np.array[1,2]+np.array[3,4] 12345X=np.array([0,0,1],[0,1,1],[1,0,1],[1,1,1])# 输入数据y=np.array([0],[1],[1],[1])# 标签数据# 目的是为了让网络发现逻辑门(前两列->标签),第三列是一个+b 偏置但后面又有偏置向量因此此处似乎冗余 神经元模型 关于偏置 定义激活函数及其导数 12345 ...
Gemini
未读关于Gemini使用的火判 动机 使用则皆知,但其实不使用亦然。 纵观从小到大的教育:自己的作业自我完成。如果检索资料能够替代自己的手工打磨和思考,如果抄袭复制模仿能够提升自己的真实能力和掌握水平,那么中小学何不用古早的检索软件替代传统的自习监督呢? 固然, 在无法进行自我控制之前,禁绝此类容易使用过度而“荒废”的工具大有裨益,然而,现实中又有多少人能完美地执行理想的所谓“自我控制”呢?不过乎,AI 的兴起,水波大兴,作为一种生产工具其带来的效益诚然不可估量,但其在如今学习领域的肆意横行,似乎预示这一种更大范围的坠落——只有少数把自监督能力牢牢掌握的行动和引导才可胜出。 先不谈中国应试教育的好坏,至少从一种方式看来,它具备了知识规范分层、批量输出、定期监督、奖罚机制的流程,成为一种类似 BFS 短期内稳定获取知识的途径。而对于所谓的引导式学习,奖罚监督来源于分块式的成功和失败,输出是随着引导流程而产生的,而其中所学到的每一块知识都是为了服务于最终目标。 分层-获取-监督-递进-……贯穿着各类学习的始终。 毫无分层的杂乱(区别于引导式学习,其分层即一个项目的中间步骤及发散,具备 ...


























