- 博客(23)
- 收藏
- 关注
翻译 unsigned int 和 int
通过程序也可以发现一个规律,int的取值范围是-32768~32767,把头尾连接起来形成一个环就可以了。 就如同int a;一样,int 也能被其它的修饰符修饰。除void类型外,基本数据类型之前都可以加各种类型修饰符,类型修饰符有如下四种: 1.signed----有符号,可修饰char、int。Int是默认有符号的。 2.unsigned-----无符号,修饰int 、char 3.long------长型,修饰int 、double 4.short------短型,修饰int 我们主要来看一下sig
2021-05-08 22:42:23
327
转载 java接口与 @override 的理解
原文链接:https://blog.youkuaiyun.com/qq_19782019/article/details/80259836 接口? 接口概念 官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 我的解释:接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的。或者我们可
2021-05-08 16:16:12
852
1
转载 webServer中遇到单继承和接口问题!
创建线程类,遇到单继承,和接口 去创建一个类! 什么是单继承,什么是接口!查阅文章 转载文章!原文链接:https://blog.youkuaiyun.com/fengzijinliang/article/details/51439368 首先,类的多继承有哪些缺点那: 第一,如果一个类继承多个父类,如果父类中的方法名如果相同,那么就会产生歧义。 第二,如果父类中的方法同名,子类中没有覆盖,同样会产生上面的错误。 所以,java中就没有设计类的多继承。 但是接口就设计成多继承,是因为接口可以避免上述问题: 首先,接.
2021-05-08 14:53:20
198
原创 .和->的区别 ,在C++中 访问函数的区别
先声明一个结构体 活着一个类 struct student{ int age; char meger; string Name; } class student { public int age; char meger; string name; } .和->的区别; 先声明一个结构体或者类 声明结构体类型: struct student St1; 声明指针类型: struct * student pSt1;他是在内存中某个块占了一个结构体类型 然后 再用一个指针变量pSt1去指向它; 那么这个
2021-04-29 08:41:27
224
转载 C++ memset 踩坑
文章目录 一、前言 二、函数作用 三、效率对比 四、误区总结 1、按字节设置 2、设置的值只有最低字节有效 3、堆内存不可直接 sizeof 取首地址 4、传参数组不可直接 sizeof 取首地址 一、前言 memset 作为对内存初始化的函数,还是有不少坑和误区的,今天就来对这个函数作一个总结。 二、函数作用 最简单的调用就是将一个数组清零,代码如下: const int maxn = 1024; int a[maxn]; memset(a, 0, sizeof(a)); // a[0]=a[1]=a[
2021-04-20 20:54:45
264
原创 根据中序,先序;或中序 后序 遍历 结果 可以推出原二叉树
先找到 根节点 在找左子树,右子树,再找左子树根节点,右子树根节点, 左子树,右子树 一直这样迭代,递归下去! 1、根据中序,先序;或中序 后序 遍历 结果 可以推出原二叉树 解答 遍历结果 先序:先访问 根节点 再先序访问 左子树 再放问右子树 A B C D E F G H 中序: 先访问左子树 再访问 根节点 再访问 右子树 C B D A E G F H 后续: 先后续遍历左子树,再后序遍历右子树,再后序遍历根节点 C .
2021-04-20 10:36:27
1413
原创 c++递归斐波那契数列 ,递归三个要点
1、递归必须有明确终止条件,不能一直递归不输出; 2、函数处理规模一定是递减 【不然,也是无法终止 要向终止条件 递归前进】 3、这个转化必须是可解的【这个问题可以递归解决 才能用递归 ,不然不要用递归】 #include<iostream> #include<string> using namespace std; //1 2 3 5 8 13 21 34 //前面两个的和是后一个数 //求斐波那契数列第N个数 f(n) = f(n-1)+f(n-2) ////递归必须得
2021-04-18 00:05:40
355
原创 视图的作用,如何创建一个视图create view
视图的作用: 1、视图隐藏了底层的表结构,简化了数据访问操作,客户端不再需要知道底层表的结构及其之间的关系。 2、视图提供了一个统一访问数据的接口。(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限) 3、从而加强了安全性,使用户只能看到视图所显示的数据。 4、视图还可以被嵌套,一个视图中可以嵌套另一个视图。 CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition` //实例 CR
2021-04-14 10:02:25
1041
原创 内存对齐,只要是跨平台的都要内存对齐
内存对齐 内存对齐,只要是跨平台的都要内存对齐,c\c++\java\python 其中c\c++是手动释放内存堆空间 动态开辟或new出来的。 jvm是java自动释放内存堆管理。但是有些错误的写法会照成内存泄漏,或内存溢出。 python 内存是由私有堆空间管理的,所有python对象和数据结构,都存在私有堆空间,程序员没有访问私有堆的权限,只有解释器才能操作。 python 万物皆为对象,对内存封装的很好,所以python的基本数据类型所用的内存,远大于存放纯数据类型所占用的内存, c++内存管理
2021-04-12 10:38:18
549
原创 c++中的左值和右值,变量的重复定义,特殊是可以的,全局变量,和局部变量可以重复定义,但是会被局部变量代替
基本上每个应用程序领域的程序员都有使用 C++。 C++ 通常用于编写设备驱动程序和其他要求实时性的直接操作硬件的软件。 C++ 广泛用于教学和研究。 任何一个使用苹果电脑或 Windows PC 机的用户都在间接地使用 C++,因为这些系统的主要用户接口是使用 C++ 编写的。 –C++ 中的左值(Lvalues)和右值(Rvalues)– Lvalues Rvaluse 左值:指向内存位置的表达式称为左值表达式,左值可以出现在 赋值号 的左边和右边 int a,这个a就是既可以为左出现在赋值号 左边也
2021-04-07 10:56:40
438
1
原创 find查找运算 操作自定义类型的时候 看代码报错了 得重载==号操作符!没有匹配person类型的左操作符
1、find(begin(),end(),value);value是值。 看到底层就是一个迭代 ,循环。从begin()到end()的一个循环,如果 *it==value 就返回it 那么 我们就是只需要,重载 这个类 ,vector这个person 类中的符号 = = 符号,不需要返回值, bool operator= =( const person &p ){ if(this->name = p->name&&this->age = p->age
2021-04-05 20:00:39
209
原创 内置函数对象 头文件:include<function> 1、加法 2、比大小3、逻辑运算
1、加减运算 函数对象 push (1,2) 2、逻辑运算 与或非 logic_not() 在vector中创建一个bool 类型的数组、 vector v; 3、比较运算 比大小 greater () 大的返回真 less()小的返回真 下面展示一些 内联代码片。 // A code block #include<iostream> // An highlighted block var foo = 'bar'; ```#include<iostream> using nam
2021-04-05 16:37:26
451
原创 LIST是不支持随机访问迭代器的 他是链表结构 ,,,2、仿函数3、set\map函数插入值 的返回类型,可以是返回队组类型判断是否插入成功
**就是 有值 也有地址 ,**有一个指向前面一个值得地,和一个指向后面 一个值的地址。这样就没法随机访问了。。但是有些vector 他只有一个地址,就用一个地址,后面都是联系的 就可以随机访问了。 这是关键。就可以用sort(begin(),end()). 但是有些无法支持,只能 用内置函数,list.sort()。默认排序规制都是从小到大的。 但是可以传一个回调函数,这个函数返回值是bool类型,就可以传进去了, bool mycompare(int va1 ,int va2){ return v
2021-04-05 14:33:50
837
转载 set和map容器 的排序 自定义函数
map 容器 利用仿函数可以指定map容器的排序规则 对于自定义数据类型,map必须要指定排序规则,同set容器 map<int,int,compare> m; m.insert(make_pair(1,2)); // An highlighted block class MyCompare { public: bool operator()(int v1, int v2) { return v1 > v2; } }; void test01() { //默认从小到大排序 //利用
2021-04-02 09:51:41
349
原创 C++的编程思想 : 1、面向对象思想 :三大特征:封装 继承 多态;2、泛型思想
面向对象三大特性:: 封装:把一些属性和行为 类似的东西 抽象出来,作为一个整体,成为一个类。 很多相似的类型 物与类聚 。叫做封装、 子类 来继承父类:把父类的属性和行为 继承下来,不用重复写 这也起到一个复用性的提升。 多态,{静态多态“函数的重载,操作符的重写”、动态多态“父类指针,指向子类对象。 就是一个函数名称,可以有多个操作的接口,同样都是一个名称,由于我们对象不同,父类指针,指向子类对象,由于创建的子类对象不同 ,调用同一个接口产生不同的形态。这就是多态。 泛型编程:就是模板,模板将、函数和类
2021-03-23 20:36:13
770
转载 C++虚函数和虚函数表原理,多态中的重写!
虚函数的地址存放于虚函数表之中。运行期多态就是通过虚函数和虚函数表实现的。 类的对象内部会有指向类内部的虚表地址的指针。通过这个指针调用虚函数。 虚函数的调用会被编译器转换为对虚函数表的访问: ptr->f(); //ptr代表this指针,f是虚函数 *(ptr->vptr[1])(ptr); 上述代码中,ptr代表一个this指针,ptr指向的vptr是类内部的虚表指针。这个虚表指针会被放在类的最前方(VS2017),1就是虚函数指针在虚函数表中的索引值。在这个索引值表示的虚表的槽中存放
2021-03-16 17:14:18
453
原创 做函数的形参 用常量引用的好处 就是可以避免开辟栈区地址,他传下来的就是实参的地址,也可以避免方法改变实参,这样和值传递差距就是避免栈区饱满
void showValue(const int& v) { //v += 10; cout << v << endl; } int main() { //int& ref = 10; 引用本身需要一个合法的内存空间,因此这行错误 //加入const就可以了,编译器优化代码,int temp = 10; const int& ref = temp; const int& ref = 10; //ref = 100; //加入const后不可以修改
2021-03-11 21:57:53
235
转载 C++中“非常量引用的初始值必须是左值”的处理方法 常量引用可以系统会创建值TEAMP且不可修改,引用就是指向这个临时值
原文:https://blog.youkuaiyun.com/hou09tian/article/details/80565343 1 左值和右值 在C++中,左值可以出现在赋值语句的左边和右边;右值只能出现在赋值语句的右边,不能出现在赋值语句的左边。变量是左值,常量是右值。 2 引用 引用(reference)为对象起了另外一个名字,引用类型引用(refers to)另外一种类型。通过在变量名前添加“&”符号来定义。引用具体的使用方法请参考《C++的引用与重载函数》。 3 非常量引用的初始值必须是左值 3.1
2021-03-11 21:10:46
243
原创 这里指针指向new出来的堆区地址然后又arr代表的就是指针。
//堆区开辟数组 int main() { int* arr = new int[10]; for (int i = 0; i < 10; i++) { arr[i] = i + 100; } for (int i = 0; i < 10; i++) { cout << arr[i] << endl; } //释放数组 delete 后加 [] delete[] arr; system("pause"); return 0; } int arry[10];
2021-03-09 21:53:22
227
原创 栈区和堆区的用法
1 内存分区模型 C++程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收 我的理解是:main函数中有个指针P变量是主函数的局部变量,他是随主函数结束而自动释放的,而其他创建的函数变量是该函数执行完就消失的。老师第一次是在主函数中的变量指向创建函数栈区变量的地址,自然会释放。而第二次是指向创建堆区
2021-03-09 20:43:52
353
原创 2021-03-08
这些代码中有嵌套循环,break跳出! 也有结构体地址作为形参,当结构体作为形参而不是地址的时候那么,他在函数内改变的值,不会改变函数外的值。 void addAddressBook(addressbook *ads) { while (1) { if (ads->m_size == Max) { cout << "抱歉你的通讯录空间已满" << endl; break; } else { //保存姓名 cout << "请输入姓名\t"
2021-03-08 20:45:08
108
原创 2021-03-08
C++程序中地址(指针)作为型参、地址(引用)作为形参。可以改变实参,也更省内存。 //用地址作为形参 可以省略内存地址,因为:应为形参占用地址只有四个字节。而如果传递实参,有可能是结构体、有可能数组,这样使内存占用空间变大。 下面展示一些 内联代码片。 // struct student { string name; int score; }; struct teacher { string name; struct student stu[5]; }; void creat_th_stu_n
2021-03-08 20:41:06
100
原创 2021-03-08
C++程序中 break 语句,如果在执行嵌套循环,是退出最外层循环,还是退出正在执行的内层循环呢?如何退出最外层循环。 答案:得看break语句 现在正在程序 哪个循环体中,退出的是他所在的循环体; 如果想在内层循环,去退出最外层循环,也可以直接在break语句中加上后缀。如下程序: 下面展示一些 class Demo1 { public staticvoid main(String[] args) { aaa:for(int j = 0 ; j<3 ; j++) { /
2021-03-08 20:34:53
105
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅