![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
JzjSunshine
这个作者很懒,什么都没留下…
展开
-
C++ 键盘接收字符建立动态二维数组无冗余
int main(){ int n; string str; cin >> n; char **arr = new char*[n]; for(int i=0;i<n;i++){ int j = 0; cin >> str; int len = str.length(); arr[i] = new char[len+1]; for(int j=0;j<原创 2021-03-12 10:00:25 · 121 阅读 · 0 评论 -
QT自定义信号signal和(带参数/不带参数)槽函数slot
需求:老师下课,发出饿了的信号,学生请吃饭1. 说明信号自定义信号位置返回值 void 只需要声明,不需要实现可以有参数,可以重载槽函数早期响应信号槽函数 QT 必须写在该位置,高级版本可以到public或者全局下可以有参数,可以发生重载返回值 void,需要声明,也需要实现2.目录结构说明:新建了两个类,一个老师,一个学生;student.h#if...原创 2020-03-05 15:42:37 · 4815 阅读 · 1 评论 -
C++ 网络编程 socket(结构化数据传输)
结构化数据传输server// ctrl + k + c// Ctrl + K+ U #define WIN32_LEAN_AND_MEAN#include <iostream>#include <Windows.h>#include <WinSock2.h>using namespace std;//加入静态连接库#pragma ...原创 2019-11-01 20:40:25 · 1240 阅读 · 0 评论 -
C++ 强制类型转换
C++是强类型的语言,运算时要求类型相容或匹配。隐含参数this匹配调用当前函数的对象,若用constvolatile说明this指向的对象,则匹配的是const、volatile对象。如定义了合适的类型转换函数,就可以完成操作数的类型转换;如定义了合适的构造函数,就可以构造符合类型要求的对象,构造函数也可以起到类型转换的作用。对象与不同类型的数据进行运算,可能出现在双目运算符的左边和右边,...原创 2019-10-27 15:30:07 · 144 阅读 · 0 评论 -
C++ 赋值与调用
对于类T,防止内存泄露要注意以下几点不要随便使用exit和abort退出程序;定义T(const T &) 、T(T&&)等形式的深拷贝构造函数;定义T &operator=(const T &) 、T &operator=(T&&)等形式的深拷贝赋值运算符虚函数;定义virtual ~T( )形式的虚析构函数;在定义有址...原创 2019-10-27 14:47:44 · 284 阅读 · 0 评论 -
C++ 运算符 -> % ! 重载
-> 重载#include <iostream>using namespace std;struct A{ int a; A(int x){ a = x;}};class B{ A x; public: A *operator->(); B(int v):x(v){}};A *B::operator->(...原创 2019-10-27 12:03:35 · 258 阅读 · 0 评论 -
C++ 运算符重载 ++ --
1.基本知识:左值(L-value):左值可以出现在赋值语句的左边或右边;左值(L-value) 的L 应该被理解为Location ,表示可寻址的,有确定地址的右值(R-value): 右值只能出现在赋值语句的右边右值(R-value) 的R 应该被理解为Read ;简单来说, 有确定地址,可取地址的是左值;否则就是右值;2. C++规定运算符重载必须针对类的对象,即...原创 2019-10-26 15:19:39 · 334 阅读 · 0 评论 -
C++ 多继承类 虚基类
1.多继承派生类有多个基类或者虚基类,同一个类不能多次作为某个派生类的直接基类,但可以作为一个派生类的间接基类;class QUEUE: STACK, STACK{/*…*/}; //错误,出现两次class Q: S {S d;/*…*/}; //正确:采用委托d代理的方式2. 委托代理在多数情况下能够满足需要,但当对象成员和基类存在共同的基类时,就可能对同一个物理对象重复初始化(可能是...原创 2019-10-25 21:33:26 · 556 阅读 · 0 评论 -
C++ 友元 绑定
1. 纯虚函数和虚函数都能定义为另一个类的成员友元;由于纯虚函数一般不定义函数体,故一般不会访问另一个类的成员,定义为其他类的友元意义不大;2. 一个函数是一个基类的友元,该函数不会自动成为这个基类的派生类的友元;3.编译程序为有虚函数 类创建一个虚函数入口地址表VFT,表首地址存放在对象的起始单元中;当对象调用虚函数时,通过其起始单元得到VFT首址,晚期绑定到相应的函数成员。对象类型不同则绑...原创 2019-10-25 20:16:39 · 105 阅读 · 0 评论 -
C++ 抽象类
1. 纯虚函数:不必定义函数体的虚函数,也可以重载,缺省函数,省略参数,内联等;相当于Java的interface;抽象类是含有纯虚函数的类;格式:virtual 函数原型 = 0;纯虚函数有this,不能同时用static 定义;构造函数不能定义为虚函数,故也不能定义为纯虚函数;析构函数可定义为虚函数,故也可定义为纯虚函数。;纯虚函数函数体定义在派生类中实现成为虚函数;2....原创 2019-10-25 19:34:52 · 160 阅读 · 0 评论 -
C++ constexper
1.constexper(const experssion)常量表达式:值不会改变并且在编译过程中就会得到计算结果的表达式; (运行中得到结果的不能成为常量表达式)const int i=3; //是一个常量表达式const int j=i+1; //是一个常量表达式int k=23; //k的值可以改变,从而不是一个常量表达式const int m=f(); /...转载 2019-10-24 21:18:03 · 974 阅读 · 0 评论 -
C++ 虚函数
1.虚函数:用virtual定义的非static实例成员函数,虚函数可表现多态性,非虚函数的执行效率比较高,但是不能表现多态性;.虚函数总是有this,故参数后面可出现const 和 volatile,而staic成员函数无 this,故参数表后不可出现const 和 volatile,所以virtual 和 static 不能同时出现,否则关于this是矛盾的;动态多态:重载函数表现的是...原创 2019-10-24 21:07:22 · 134 阅读 · 0 评论 -
C++ 单继承 父类和子类
1.如果派生类的继承方式为public,则这样的派生类称为基类的子类;2. C++ 允许父类指针指向子类对象,父类引用子类对象,无须通过强制类型转换保持赋值类型相容,因为子类对象isa父类对象,编译时按父类说明的权限访问成员;3. 通过父类指针调用虚函数进行晚期绑定,根据对象的实际类型绑定到核实的实例成员函数;4. 父类指针可视为泛型函数,配合虚函数产生多态行为;示例代码#include...原创 2019-10-24 20:41:11 · 960 阅读 · 0 评论 -
C++ 析构和构造
1. 析构为构造的逆序,单继承派生类只有一个基类或虚基类,根据四个优先级别确定构造顺序;调用派生类虚基类的构造函数,无论列出总会被执行;调用派生类基类的构造函数,无论列出总会被执行;按照派生类实例数据成员声明的顺序,一次初始化实例数据成员或调用构造函数,对象无论是否列出总会被构造;最后执行派生类的构造函数;2. 基类、对象成员不列出时自动调用无参构造函数;3.以下情况派生类必须定义...原创 2019-10-24 19:33:33 · 141 阅读 · 0 评论 -
C++ 继承
1.单继承类1. 派生类与基类:接受新成员的新类:派生类;提供成员的原有类型:基类;2. 单继承:获取一个基类的属性和行为,多继承:获取多个基类的属性和行为;3. 定义格式▪ class <派生类名>:<继承方式><基类名>{<派生类新定义成员><派生类重定义基类同名的数据和函数成员><派生类声明改变基类可访问成员访...原创 2019-10-24 17:26:33 · 109 阅读 · 0 评论 -
C++ 友元
友元有成员友元和普通友元;普通友元:将普通函数定义为某个类的友元;成员友元:将一个类的函数定义为另一个类的友元;友元不是定义该友元类的函数成员,故不受该类的访问权限的限制,因此可以随意的在 private,public,protected下面声明友元;若定义友元时同时定义友元的函数体,由于函数体在类中定义,该函数成员自动称为inline 函数,且该函数作用域局限于当前文件;1.成员友...原创 2019-10-13 11:28:00 · 127 阅读 · 0 评论 -
C++ 静态函数成员
1.静态函数成员的访问权限和继承规则和普通成员无区别;不同之处,普通函数成员第一个参数为隐含 this 参数,而静态函数成员没有隐含 this参数;2.构造函数,析构函数以及虚函数都有this参数,此外,若成员参数表后面出现 const 或 volatile,则函数必包含隐含的 this 参数,这些函数不能定义为静态函数;其二者区别静态成员函数与普通成员函数的区别:静态成员函数没有 ...原创 2019-10-13 09:48:52 · 198 阅读 · 0 评论 -
C++ 静态数据成员
1.静态数据成员包括静态数据和静态函数成员,访问权限和普通成员一样;静态数据成员用于描述类的总体信息,必须在类的体外定义并初始化,union不允许定义静态数据成员(union数据成员共享存储空间,而静态成员各自独立分配存储单元);2.静态数据成员脱离对象独立存在,存储单元不属于任何对象的一部分,在计算类或者对象的空间大小时不包括静态数据成员;3.访问形式: - LIST::head; - ...原创 2019-10-13 00:06:50 · 343 阅读 · 0 评论 -
C++ 引用对象
1. 值参传递所进行的赋值称为浅拷贝赋值,浅拷贝赋值导致形参和实参的指针成员指向共同的存储单元。由此造成的后果是一旦被调用的函数返回,形参析构就必然会释放其指针所指向的存储单元,该存储单元可能会立刻被操作系统分配给其他程序,但本程序并不知道该存储单元被分配给其他存储单元,必然造成一个程序非法访问另一个内存单元;/*在本例中,void func,程序有两次析构输出,函数func返回前析构形参 y...原创 2019-10-12 21:24:58 · 509 阅读 · 0 评论 -
C++ 引用
1. 引用作为一个变量的别名,一个变量不能只有别名,而无自己真实姓名;(即生活中的给同学起外号)变量的引用#include <iostream>using namespace std;{ int a = 3; int &b = a; //b就是a的引用,即b是a的一个别别名。 //引用必须初始化,否则编译会报错 ...原创 2019-10-12 20:18:35 · 110 阅读 · 0 评论 -
C++ volatile multable
**类型修饰符,用它声明的变量可以被某些编译器未知的因素所修改如:操作系统,其他进程等,遇到这个关键字声明时,编译器对访问该变量的代码不再进行优化;可以提供特殊的稳定访问;当要求使用 volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存volatile 的意思是让编译器每次操作该变量时一定要从内存中真正...原创 2019-10-12 20:10:44 · 261 阅读 · 0 评论