算法题:找出最长回文子串
今天刷到一道很经典的算法题:找出字符串的最长回文子串,常见的思路是中心扩散,算法是dp,但是题解中有两个十分优秀的算法,特作记录
今天刷到一道很经典的算法题:找出字符串的最长回文子串,常见的思路是中心扩散,算法是dp,但是题解中有两个十分优秀的算法,特作记录
这一节主要给大家介绍C语言中经常令人迷惑的两个关键字const和static,考虑到大家的基础,我只在课堂上讲授最初级的内容,但是初级不等于不重要,也决不等于简单,相反,学好初级的内容在编程当中具有十分重要的意义,是各位今后理解更高级别代码的基石,希望大家对下面的内容做到精准掌握!后续,我会根据情况逐渐对这篇博客进行完善,补充一些更高级的用法和更深层次的知识,下面,让我们从内存开始——
Windows是闭源的,有版权保护,资料较少,不好深入研究每一个细节,至今仍有一些内部原理不被大家知晓。下图是一个典型的 Windows 32位程序的内存分布:(图片为什么又不能正常显示了!!!)
Me:
但是在我int &a = f(int b)的例子中,f函数返回的也是一个临时的整数值啊,为什么绑定到临时的整形上就不会错,绑定到临时的pair上就会错呢?
ChatGPT:
好问题!这涉及到 C++ 中的两种不同的语法和行为。
在 C++ 中,绑定到临时值的非 const 引用是允许的,但有一个重要的区别:
对于基本数据类型(如整数),非 const 引用可以绑定到临时值,因为整数是可修改的。
对于复杂的用户定义类型(如 pair<int, int>),非 const 引用不能直接绑定到临时值。这是因为,与整数不同,pair<int, int> 是一个复杂的对象,C++ 规定不能通过非 const 引用修改临时对象,以防止悬垂引用问题。
这就是为什么在你的原始代码中,当你尝试用非 const 引用绑定到 pair<int, int> 类型的临时值时,编译器报错的原因。而在 int &a = f(int b) 这种情况下,int 是一个基本数据类型,可以通过非 const 引用绑定到临时值。
1 | cpp |
这是真的吗???
最近复习一下语法,结合了以下三本工具书,记录一下有收获的点:
个人认为,重载是C++区别于C的三大特性(封装,继承,多态)中属于封装的重要特性之一,注意,重载(Overloading)是一种封装(Encapsulation)的概念而非多态,它允许在同一个作用域内使用相同的名称,但是参数列表不同的函数或方法。
重载 是一种封装的概念,它提供了一种通过相同的名称执行不同操作的机制,提高了函数或方法的可用性和易用性。
多态 是面向对象编程的一个特性,它允许不同的对象对相同的消息做出不同的响应,提高了代码的灵活性和可扩展性。
下面介绍一些重载的高阶用法: