C和C++
主要介绍c和c++的相关知识
Aming Glaxy
这个作者很懒,什么都没留下…
展开
-
重载、重写、覆盖、隐藏的区别
原创 2020-07-22 11:34:15 · 171 阅读 · 0 评论 -
c语言和内存
1、知识图谱原创 2020-07-10 20:47:16 · 199 阅读 · 0 评论 -
c++中的细节知识点(九)
1、知识图谱原创 2020-07-09 19:18:57 · 121 阅读 · 0 评论 -
c++中的细节知识点(八)
1、知识图谱2、举例例1:模板函数的定义举例template<typename T> void Swap(T *a, T *b){ T temp = *a; *a = *b; *b = temp;}例2:类模板的定义举例template<typename T1, typename T2> //这里不能有分号class Point{public: Point(T1 x, T2 y): m_x(x), m_y(y){ }public:原创 2020-07-09 11:54:19 · 251 阅读 · 0 评论 -
C++中的细节知识点(七)
1、知识图谱2、举例例1:转换构造函数下理解全局函数重载和成员函数重载的区别在上图中,转换构造函数可以将15.6和28.3等浮点数转换成Complex类型,这样便于参与运算,并且重要的是,转换完之后,这些数就可以使用成员函数了,因为他们已经被编译器修改成了Complex的对象。另外,在编译器进行转换时,只会将参数进行转换,而不会将一个普通的数进行转换。Complex c2 = c1 + 15.6会进行如下的转换:Complex c2 = c1.operator+(Complex(15.6));原创 2020-07-08 11:07:01 · 157 阅读 · 0 评论 -
c++中的细节知识点(六)
1、知识图谱2、举例例1:构成多态的条件的举例分析#include <iostream>using namespace std;//基类Baseclass Base{public: virtual void func(); virtual void func(int);};void Base::func(){ cout<<"void Base::func()"<<endl;}void Base::func(int n){原创 2020-07-01 19:50:47 · 185 阅读 · 0 评论 -
c++中的细节知识点(五)
1、知识图谱2、举例例1:using改变派生类中继承的基类成员权限#include<iostream>using namespace std;//基类Peopleclass People {public: void show();protected: char *m_name; int m_age;};void People::show() { cout << m_name << "的年龄是" << m_ag原创 2020-06-27 21:53:07 · 378 阅读 · 0 评论 -
c++中的细节知识点(四)
1、知识图谱2、举例例1:临时数据的取地址int n = 100, m = 200;int *p1 = &(m + n); //m + n 的结果为 300int *p2 = &(n + 100); //n + 100 的结果为 200bool *p4 = &(m < n); //m < n 的结果为 false上面的例子是错误的。int func(){ int n = 100; return n;}int *p = &原创 2020-06-18 20:36:18 · 123 阅读 · 0 评论 -
c++中的细节知识点(三)
1、知识图谱2、举例例1:静态成员变量的访问//通过类类访问 static 成员变量Student::m_total = 10;//通过对象来访问 static 成员变量Student stu("小明", 15, 92.5f);stu.m_total = 20;//通过对象指针来访问 static 成员变量Student *pstu = new Student("李华", 16, 96);pstu -> m_total = 20;例2:静态成员函数的使用举例#include原创 2020-06-07 16:57:37 · 186 阅读 · 0 评论 -
c++中的细节知识点(二)
1、知识图谱2、例子例1:成员对象的初始化Car::Car(int price, int radius, int width): m_price(price), m_tyre(radius, width)/*指明m_tyre对象的初始化方式*/{ };例2:在类中包含成员对象时的构造和析构函数的调用顺序#include<iostream>using namespace std;class Tyre {public: Tyre() { cout << "Ty原创 2020-06-03 22:02:58 · 138 阅读 · 0 评论 -
c++中的细节知识点(一)
1、知识图谱2、const在c++中和c语言中的区别举例2#include <stdio.h>const int n = 10;void func();int main(){ func(); printf("main: %d\n", n); return 0;}#include <stdio.h>extern int n;void func(){ printf("module: %d\n", n);}在上面的例子中,c++下,原创 2020-06-03 09:35:19 · 243 阅读 · 0 评论 -
C语言多文件编译
原创 2020-05-24 19:38:05 · 286 阅读 · 0 评论 -
C语言中的内存机制
原创 2020-05-24 18:27:49 · 165 阅读 · 0 评论 -
C语言中的细节知识点(七)
原创 2020-05-24 16:10:48 · 118 阅读 · 0 评论 -
C语言细节知识点(六)
原创 2020-05-24 11:48:08 · 158 阅读 · 0 评论 -
C语言中的细节知识点(五)
1、知识图谱2、指针数组的例子#include <stdio.h>int main(){ char *lines[5] = { "COSC1283/1284", "Programming", "Techniques", "is", "great fun" }; char *str1 = lines[1]; char *str2 = *(lines + 3); char原创 2020-05-23 22:34:41 · 299 阅读 · 0 评论 -
C语言细节知识(四)
1、知识图谱2、C语言条件编译2.1 #if的用法#if 整型常量表达式1 程序段1#elif 整型常量表达式2 程序段2#elif 整型常量表达式3 程序段3#else 程序段4#endif它的意思是:如常“表达式1”的值为真(非0),就对“程序段1”进行编译,否则就计算“表达式2”,结果为真的话就对“程序段2”进行编译,为假的话就继续往下匹配,直到遇到值为真的表达式,或者遇到 #else。这一点和 if else 非常类似。需要注意的是,#if 命令原创 2020-05-23 17:46:46 · 305 阅读 · 0 评论 -
C语言细节知识点(三)
原创 2020-05-23 12:14:05 · 201 阅读 · 0 评论 -
C语言中的细节知识(二)
1、知识图谱2、密码输入函数代码void GetPassWD(char *pwd,int pwdlen) { int i = 0; char ch=0; while (i<pwdlen) { ch = _getch(); if (ch == '\r') { //按下回车,结束密码输入 printf("\n"); break; } if (ch=='\b'&&i>0) { //按下退格,删除一个字符 i--; printf原创 2020-05-21 18:54:40 · 272 阅读 · 0 评论 -
C语言中的细节知识(一)
原创 2020-05-20 22:29:53 · 244 阅读 · 0 评论 -
malloc和new的比较
摘要:本文主要分析了malloc和new两者的区别。1、申请的内存所处的位置malloc是c语言中的概念,申请的是堆中的内存空间。堆是计算机操作系统中特殊分配出来的一个内存区域,用于程序的内存动态分配。new是c++中的概念,申请的空间称之为自由存储区。自由存储区是针对于new的一个概念,可以理解为凡是用new申请的空间,都可以称之为自由存储区。注意:自由存储区不一定是堆,也...原创 2019-09-21 17:06:00 · 401 阅读 · 0 评论 -
为什么使用指针变量时一定要申请空间?
摘要:本文主要探究一个问题:为什么使用指针变量时一定要申请空间?1、问题的提出:我们在使用指针时,有时需要用指针指向一个变量,用指针来对变量进行操作;而有时我们就需要直接定义一个指针变量,然后用指针变量进行相关操作。针对第二种情况,直接采用以下的方式: 1 #include<iostream> 2 3 using namespace std; 4 5 st...原创 2019-09-20 16:40:00 · 2299 阅读 · 0 评论 -
10名评委为5名选手打分问题
摘要:本文主要介绍了10名评委对5名选手进行打分问题的解决办法。1、题目示意有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分。2、解决办法2.1. 创建五名选手,放到vector中2.2. 遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分存到deque容器中2.3. sort算法对deque容器中分...原创 2019-08-19 21:30:00 · 960 阅读 · 0 评论 -
QT学习之信号和槽
摘要:在QT中,我们可以使用系统提供的函数实现信号和槽的链接,但是在QT中不仅仅如此,还可以让用户自己定义信号和槽函数。在本文中,我将在自己定义的teacher类下定义信号函数hungry,然后在自己定义的student类下定义槽函数treat,最后在wedget类下将两个函数进行链接、触发、显示。1、teacher类有信号函数,本例中就是hungry,有参数和没有参数的,其中有参数...原创 2019-08-14 21:09:00 · 106 阅读 · 0 评论 -
用QT创建的第一个工程
摘要:本文主要是利用向导建立了第一个qt工程文件,主要介绍了工程文件的结构、main函数、按钮的建立、qt中的对象树、坐标系、qt中的信号和槽等概念。1、工程文件的结构利用qt导向建立好工程文件以后,会自动生成main函数、头文件、源文件和Pro文件,如下图:2、main函数在这个main函数中,主要创建了一个窗口对象w,调用构造函数,实现一些按钮、信号和槽的功能。 1 #...原创 2019-08-13 20:32:00 · 190 阅读 · 0 评论 -
STL之适配器
摘要:本文主要讲了适配器的一些内容,重要的是了解适配器使用的步骤。 1 #include<iostream> 2 #include<vector> 3 #include <algorithm> 4 #include<functional> 5 #include <string> 6 7 using...原创 2019-08-26 15:09:00 · 76 阅读 · 0 评论 -
STL之谓词
摘要:本文主要介绍了谓词的相关内容,并且用简单的代码对其进行了应用。1、基本概念1.1 什么是谓词?谓词是指普通函数或重载的operator()返回值是bool类型的函数对象(仿函数)。1.2 谓词的分类如果operator接受一个参数,那么叫做一元谓词,如果接受两个参数,那么叫做二元谓词,谓词可作为一个判断式。2、代码示例 1 #include<iostream&...原创 2019-08-23 11:48:00 · 82 阅读 · 0 评论 -
STL之函数对象
摘要:本文主要介绍了函数对象(仿函数)的基本概念,并且举例子对其进行基本的使用。1、基本概念1.1 什么是函数对象?重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象,也叫仿函数(functor),其实就是重载“()”操作符,使得类对象可以像函数那样调用。1.2 注意函数对象(仿函数)是一个类,不是一个函数。函数对象(...原创 2019-08-23 10:47:00 · 92 阅读 · 0 评论 -
STL之map容器和multimap容器
摘要:本文主要介绍了map容器和multimap容器的相关内容。1、基本概念1.1 Map的特性所有元素都会根据元素的键值自动排序。Map所有的元素都是pair,同时拥有实值和键值,pair的第一元素被视为键值,第二元素被视为实值,map不允许两个元素有相同的键值。1.1 map容器的键值无法修改map的键值关系到map元素的排列规则,任意改变map键值将会严重破坏map组织。...原创 2019-08-22 17:25:00 · 109 阅读 · 0 评论 -
STL之set容器和multiset容器
摘要:本文主要介绍了set容器和multiset容器的相关内容。1、基本概念set容器multiset容器概念所有元素都会根据元素的键值自动被排序,元素即是键值又是实值,不允许两个元素有相同的键值,元素值不可以被改变multiset特性及用法和set完全相同,唯一的差别在于它允许键值重复实现set和multiset的底层实现是红黑树,红...原创 2019-08-22 14:45:00 · 101 阅读 · 0 评论 -
STL之stack容器和queue容器
摘要:本文主要介绍了两种容器——stack容器和queue容器。1、基本概念stack容器queue容器容器介绍stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口,形式如图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何其他方法可以存取stack的其他元素。换言之,sta...原创 2019-08-20 11:37:00 · 110 阅读 · 0 评论 -
STL之deque容器
摘要:本文主要介绍了deque容器以及一些API的使用。1、基本概念1.1 deque容器介绍该容器和vector容器很相似,不同之处在于两点:第一是它可以实现头部的插入和删除;第二在于deque没有容量的概念,因为它是动态的以分段连续空间组合而成,随时可以增加一段新的空间并链接起来。1.2 实现原理Deque容器是连续的空间,至少逻辑上看来如此,连续现行空间总是令我们联想到a...原创 2019-08-19 17:25:00 · 133 阅读 · 0 评论 -
STL之vector容器
摘要:本文主要介绍了vector容器的使用,并且举例加以理解。1、基本概念1.1 什么是vector容器简而言之,vector容器类似于数组,只不过相对数组而言,它有自己的优点:独特的空间配置策略。这样的空间配置策略有利于对空间的合理有效地利用。1.2 vector迭代器直接理解成指针,来操作vector容器中的内容。1.3 vector数据结构vector所采用的数据结构...原创 2019-08-19 15:33:00 · 88 阅读 · 0 评论 -
STL之String容器
摘要:本文主要介绍了字符串string容器的使用。1、简单介绍1.1概念C风格字符串(以空字符结尾的字符数组)太过复杂难于掌握,不适合大程序的开发,所以C++标准库定义了一种string类,定义在头文件<string>。1.2 String和c风格字符串的比较Char*是一个指针,String是一个类,string封装了char*,管理这个字符串,是一个char*...原创 2019-08-16 17:04:00 · 83 阅读 · 0 评论 -
STL中三大组件基本使用
摘要:本文主要介绍了STL中三大组件——容器、迭代器和算法的基本使用。1、容器1.1 STL中容器的研究内容STL容器实际上研究的是常见的数据结构的实现。注意:数据结构存在的意义就是提供一种数据的特定排列方式,以方便算法的实现。1.2 常用的数据结构(容器)以及分类数组(array),链表(list),tree(树),栈(stack),队列(queue),集合(set),映射...原创 2019-08-15 16:19:00 · 91 阅读 · 0 评论 -
STL之list容器
摘要:本文主要介绍了list容器的相关内容。1、基本概念1.1 链表的简单介绍链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相较于vector的连续线性空间,lis...原创 2019-08-21 15:39:00 · 107 阅读 · 0 评论 -
C++总结体会
摘要:本文主要记录了在复习c++过程中的体会。1、关于const在c++中,const代表的是一种只读权限,即代表变量的值不可以再修改;相比define而言,const修饰的数据可以有类型,更加地注重作用域;const修饰的变量用基础数据类型进行初始化时,只会标记到符号表,而不会分配内存;用变量名来进行初始化时,会分配内存;当const修饰的变量是一个自定义的数据类型时,那么也...原创 2019-09-21 15:44:00 · 346 阅读 · 0 评论 -
c和c++做题小结
1、多继承的虚基类不能够实例化。这句话是错误的,当不调用子类时,虚基类的函数当然就不会virtual的影响,而是照常可以实例化使用。2、在类的非静态函数中this指针指向调用该函数的对象。 这句话是正确的,注意非静态函数,因为多个对象的静态数据和函数都指向了同一块内存空间,不会随着新定义的对象而发生变化,所以this指针也就失去了应有的作用。3、关于运算符重载:(...原创 2019-08-12 15:50:00 · 92 阅读 · 0 评论 -
c和c++精炼总结(重点是几个重要的关键字的用法)
1、cin输入多个数据用空格或者回车来区分,不可以用“,”来区分。2、多个判断语句下,if...if...else;这样写程序会导致最后两个形成独立判断,也就是说,如果第一个if成立,那么除了执行第一个if下的内容,还会执行else下的内容;为了避免这样的问题,就需要用if...else if...else这样的嵌套3、随机数函数的应用(1)srand(time(0))和rand(...原创 2019-08-07 17:18:00 · 213 阅读 · 0 评论