
c++
wniuniu_
https://niuniu0101.github.io/
展开
-
C++ 学习 之 类的初始化与逗号运算符的联动
因为编译器把 ( 1 , 2 ) 识别为 了逗号运算符,就是 2 ,然后调用了单参构造函数。这个代码的输出结果是什么?那么结果才是 456。原创 2023-12-01 19:20:40 · 259 阅读 · 1 评论 -
C++ 学习之函数成员指针的一个小细节
这段代码在调用成员函数时存在问题。正确的方式是使用对象来调用成员函数,而不是通过指针。是指向成员函数的指针。这样就可以正确地调用成员函数了。看看下面的代码,你能看出错误吗。的方式调用了成员函数。原创 2023-11-30 22:36:05 · 179 阅读 · 0 评论 -
C++学习之继承中修改成员权限细节
【代码】C++学习之继承中修改成员权限细节。原创 2023-11-30 21:05:37 · 153 阅读 · 0 评论 -
继承中的析构函数的权限的深入了解
上面的还是会报错,因为对于main函数来说,类B的析构函数还是 private 权限,我们需要将B的析构函数设置为public权限才行。如果一个父类中的析构函数如果设置为 private 权限 ,一个子类public继承了这个父类,那么 这个父类可以创建对象吗?总结,如果创建对象的时候不能访问析构函数,则会报错,继承中也要要求子类能够访问父类的析构函数。我们可以将 类 B设置为 A 的友元。那么解决方案是什么?原创 2023-11-30 18:52:04 · 99 阅读 · 0 评论 -
C++ 学习之匿名名字空间的使用细节
匿名命名空间(anonymous namespace)是C++中的一种特殊命名空间,它没有显式的名称。匿名命名空间可以用来定义仅在当前文件中可见的全局变量、函数和类。由于没有名字,所以相当于直接引入,但是没有引入定义。如果发生冲突,则匿名空间中变量不起作用。原创 2023-11-30 20:42:00 · 410 阅读 · 0 评论 -
c++ 中名空间中using 引入的细节
如果在引入名空间中的特定成员函数的时候, 全局不能定义同名的函数,但是其实只要参数不同就行。上面这个代码如果不去调用fun函数的话不会报错,如果想要调用的话就要指名调用哪一个。上面就是一个正确的示例。原创 2023-11-30 20:03:29 · 128 阅读 · 0 评论 -
实例成员函数指针 的 一个小细节
类型不匹配,不能将它们赋值给彼此。这两行代码也是不正确的。你提供的代码定义了一个名为。的类,并初始化了一个名为。原创 2023-11-30 16:52:17 · 57 阅读 · 0 评论 -
const 和 constexpr 深入学习
本身和它的枚举类型若在声明时初始化那么就是一个常量表达式。在函数中若有常量表达式那么必须用。函数适用于常量表达式,只有在下面的情况下编译器才会接受。上下文中,函数的返回值必须是常量表达式。,仅仅满足常量表达式的条件是不够的。是一个常量,可以被赋值为一个变量。变量必须在编译时求值为常量表达式。只能用于非静态成员的函数,而。仍然是一个常量表达式。返回的不是常量表达式。可以用于含参和无参函数。所以,到底什么时候用。返回的是常量表达式。原创 2023-11-29 22:48:20 · 1297 阅读 · 0 评论 -
C++练习应对考试
【代码】C++练习应对考试。原创 2023-11-12 11:49:58 · 123 阅读 · 0 评论 -
修改 const 变量的取值
【代码】修改 const 变量的取值。原创 2023-11-10 23:29:41 · 120 阅读 · 0 评论 -
最大连续子数组
然后,递归地求解左子数组和右子数组的最大子数组和,以及跨越中间的最大子数组和。这个方法的时间复杂度是O(n*log(n)),其中n是数组的长度。: 暴力解法是最简单的方法,它通过两层嵌套循环遍历所有可能的子数组,计算它们的和,并找到和最大的子数组。最大连续子数组(Maximum Subarray)问题是一个经典的算法问题,其目标是在给定的整数数组中找到一个连续的子数组,使得该子数组的元素之和最大。上面的代码演示了几种不同的方法来找到数组中的最大子数组和(最大子序列和问题),并进行了简要的分析。原创 2023-11-08 19:31:52 · 1078 阅读 · 0 评论 -
归并排序 和 逆序对 联动
归并排序(Merge Sort)是一种经典的分而治之(Divide and Conquer)排序算法,常被用于对数组或列表进行排序。它的基本思想是将待排序的序列分成两部分,分别对这两部分进行排序,然后将排序后的两部分合并为一个有序序列。合并过程中,从两个子序列中选取较小的元素放入新的有序序列,直到两个子序列中的所有元素都被合并。:将待排序的序列分成两个大致相等的子序列,递归地对子序列进行排序。归并排序是一个高效的排序算法,适用于大规模数据集的排序,因为它的时间复杂度稳定在O(n log n)。原创 2023-11-08 19:20:08 · 510 阅读 · 0 评论 -
c++ Vector 学习
/ 把 数组 v 中的元素拷贝一份。vector w (4, 2) // 创建一个含有四个 2 的数组。cout << x << ’ ’ // 迭代器式输出。// first element 输出第一个。// last element 输出最后一个。vector 可以实现在运行的过程中重新分配。size()函数是用来计算里面含有元素的个数。resize() 函数用来重新分配元素。begin() 和 end()原创 2023-11-01 19:52:48 · 248 阅读 · 0 评论 -
virtual 关键字中 cv限定符的使用
为什么呢,难道不是因为虚函数的原因调用类B中的f()函数吗。原因就是类B中没有重写,是重载了类A中f() 函数。由于cv限定符不相同,故不是虚函数的重写。根据cppreference中的定义。原创 2023-10-31 16:13:45 · 109 阅读 · 0 评论 -
const 和 volatile 在实例成员函数的应用
我们来分析一下上面的四个函数成员 f(), 这四个函数成员为重载函数,它们的显示参数表没有定义任何形参,但是隐含形参。我们来深入思考一下,如果没有最完美得匹配,编译器会退而求其次调用次匹配的函数吗?之一,这里如果两个都存在,编译器不知道调用哪一个,就会报错,如果。我们最后进行一个实验,只把 f() 函数注释掉,看看会发生什么。注意,如果调用的时候不存在对应的实例函数成员,会报错。我们来看一个例子,这个例子都是匹配的调用对应的函数。的类型匹配,从而调用最适合的实例函数成员。所指向的对象是不能修改的只读对象。原创 2023-10-26 08:33:26 · 187 阅读 · 0 评论 -
C++ 学习 之 成员指针
【代码】C++ 学习 之 成员指针。原创 2023-10-24 19:12:31 · 90 阅读 · 0 评论 -
C++ 学习 之 名字空间 namespace
多个 cpp 文件的话,不能会自动合并相同的 名字空间,(但是匿名的名字空间不会合并)所以不能重复定义。在一个 cpp 文件中, 一个namespace 可以多次定义,最后合并,使用。如果是上面的写法的话,不能使用没有引入的名字空间里面的变量和函数。这种引入方式的话,使用的时候可以用所有 A 中的数据。要注意的是上面的情况,使用的时候要说明是调用哪一个。原创 2023-10-23 21:38:45 · 256 阅读 · 0 评论 -
C++ 学习之 虚函数在继承中难点
只要最顶层的类中的同名函数为虚函数,那么子类中所有同名函数都会被设置为虚函数。原创 2023-10-16 20:39:02 · 71 阅读 · 0 评论 -
c++ 学习之多态
我们来看看早绑定的代码我们需要利用到虚函数来解决问题。原创 2023-10-15 20:31:28 · 171 阅读 · 0 评论 -
c++ 学习之 强制类型转换运算符 const_cast
再看看const_cast在this指针中的用法。原创 2023-10-11 22:59:28 · 390 阅读 · 0 评论 -
c++学习 之 强制类型转换
我们运算符重载 A operator+(const A& p) 中除了隐藏的 this参数,另外一个参数 是 类 A 类型的 ,上面的代码明显有错误,为什么不报错呢,这是因为单参数的构造函数具有类型转换的功能,编译器将 a1 + 1 转换成了 a1 + A( 1 ) ,然后再调用 operator+ 函数进行运算,最后再调用拷贝构造函数实现 a2 的初始化。如果把注释的部分去掉,代码会报错,因为程序不知道是调用我们之前讲的那个函数,还是 将 a1 转换成 int ( 即 p 的值 ),再调用构造函数。原创 2023-10-10 19:33:57 · 152 阅读 · 0 评论 -
c++ c语言学习之 取反 ~
这道题的关键就在于虽然编码是一样的,但是程序识别出是负数还是正数,正数的补码还是本身的原码,负数的补码就是原码取反加1.使用位运算符~对一个数进行按位取反操作。这个结果表示一个无符号整数,其值为65530。这个结果表示一个有符号整数,其值为-6。为什么会出现上面的结果呢,原创 2023-10-10 07:52:10 · 1315 阅读 · 0 评论 -
c++ 学习 之 继承中静态成员函数和静态成员变量
/ 使用作用域解析运算符调用父类的静态成员函数。static void func() // 与父类同名的静态成员函数。cout << “Base 下的 静态成员函数” << endl;cout << “Son 下的 静态成员函数” << endl;原创 2023-10-07 20:50:15 · 204 阅读 · 0 评论 -
c++ 学习 之 继承中同名变量和同名函数的处理
【代码】c++ 学习 之 继承中同名变量和同名函数的处理。原创 2023-10-07 17:28:35 · 91 阅读 · 0 评论 -
c++ 学习 之 继承中同名变量和同名函数的处理
【代码】c++ 学习 之 继承中同名变量和同名函数的处理。原创 2023-10-07 17:28:01 · 101 阅读 · 0 评论 -
c++ 学习 之 继承中同名变量和同名函数的处理
【代码】c++ 学习 之 继承中同名变量和同名函数的处理。原创 2023-10-07 12:42:00 · 165 阅读 · 0 评论 -
c++ 学习 之 继承中 父类子类构造函数和析构函数的调用顺序
可以看出,先调用父类的构造函数,再调用子类的构造函数,析构函数的调用顺序与之相反。原创 2023-10-07 11:44:58 · 228 阅读 · 0 评论 -
c++ 学习 之 继承中的对象模型
总的来说, 父类中非静态的成员属性都会被子类继承下去,子类只是访问不到,但是继承下来了。原创 2023-10-07 11:32:16 · 51 阅读 · 0 评论 -
c++学习之 继承的方式
当使用 public 继承时,基类的公有成员在派生类中仍然保持为公有成员,基类的保护成员在派生类中变为保护成员,基类的私有成员在派生类中不可访问。当使用 protected 继承时,基类的公有和保护成员在派生类中都变为保护成员,基类的私有成员在派生类中不可访问。当使用 private 继承时,基类的公有和保护成员在派生类中都变为私有成员,基类的私有成员在派生类中不可访问。派生类的对象可以访问基类的保护成员,但不能访问基类的公有成员或私有成员。派生类的对象可以访问基类的公有成员,但不能访问基类的私有成员。原创 2023-10-06 18:47:56 · 123 阅读 · 0 评论 -
c++ 中 拷贝构造函数 和 operator= 函数 的使用区别
拷贝构造函数:它用于在创建一个新对象时,将一个已有对象的值复制到新对象中。通常在对象的初始化过程中调用,如对象声明时的初始化、函数参数传递(按值传递)或返回对象(按值返回)等情况。总结一下,拷贝构造函数用于创建一个新对象并将已有对象的值复制到新对象中,而赋值运算符重载函数用于将一个已有对象的值赋给另一个已有对象。赋值运算符重载函数:它用于将一个已有对象的值赋给另一个已有对象。通常在已存在的对象上调用,使用赋值运算符(=)来实现对象之间的值复制。使用赋值运算符(=)将一个已有对象的值赋给另一个已有对象。原创 2023-10-06 17:25:51 · 361 阅读 · 0 评论 -
c++ 学习 之 运算符重载 知识要点
我们要好好分清楚一些运算符的结果为 左值还是 右值。原创 2023-10-06 15:59:59 · 114 阅读 · 0 评论 -
c++ 学习 之 继承的基本语法
继承可以减少重复的代码。子类 也称为 派生类。父类 也称为 基类。原创 2023-10-06 09:10:21 · 178 阅读 · 0 评论 -
c++ 学习 之 ()运算符重载
【代码】c++ 学习 之 ()运算符重载。原创 2023-10-06 08:47:27 · 45 阅读 · 0 评论 -
c++ 学习 之 ()运算符重载
【代码】c++ 学习 之 ()运算符重载。原创 2023-10-05 23:40:20 · 42 阅读 · 0 评论 -
c++ 学习 之 关系运算符重载
【代码】c++ 学习 之 关系运算符重载。原创 2023-10-05 23:29:18 · 54 阅读 · 0 评论 -
c++学习之 赋值运算符重载
同一个空间释放了两次,会报错。上面的代码有什么问题?原创 2023-10-05 23:10:43 · 45 阅读 · 0 评论 -
c++ 学习之 利用哈希建立一个 集合
【代码】c++ 学习之 利用哈希建立一个 集合。原创 2023-10-02 21:02:32 · 208 阅读 · 0 评论 -
c++ 学习 之static 和 const深入学习
static 和 const 的作用域都是当前模块(当前cpp文件),所以不同的模块可以定义同名的static 和 const 变量在上面的例子中,我们先了解一些基础知识:上面的三种声明都涉及到变量 x,但它们在作用域和可修改性方面有不同的区别。static int x = 1;这声明了一个静态整数变量 x,其作用域限定在当前文件中。它可以被修改,因为它没有被声明为常量。const int x = 1;这声明了一个整数常量 x,其作用域通常也限定在当前文件中(如果是在文件的顶层声明的话),但它不能被修原创 2023-10-01 15:59:53 · 192 阅读 · 0 评论 -
c++ 学习 之 运算符重载 之 前置++和后置++
上面样例中,前置 ++ 返回的是引用,所以a 的值变成了3后置 ++ 返回的不是可以改变的左值,所以有问题。原创 2023-09-28 14:43:21 · 326 阅读 · 0 评论 -
c++ 学习之运算符重载 之 <<
在这里,你输出了 "m_A ",然后是 p 对象的 m_A 成员变量的值,然后是 " m_B ",然后是 p 对象的 m_B 成员变量的值。这个重载函数采用两个参数,第一个参数是一个 ostream 对象的引用,通常表示输出流(例如 cout),第二个参数是一个 Person 对象的引用,表示要输出的 Person 对象。这一行代码将 p 对象传递给 cout 对象,然后使用你定义的重载函数来打印 p 的内容。总结:通过重载左移运算符 <<,你可以自定义输出类对象的格式,使其适应你的需求。原创 2023-09-28 11:05:57 · 379 阅读 · 0 评论