C/C++总结
a salted fish
啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦
展开
-
学习生涯的开始
第一次认真的把c语言当成一门技能要开启以后职业、梦想的钥匙来学习。第一次接触C语言的时候,那时候是大二,只是简单地把它当成一门修学分的课程来学习。现在重拾C语言,久别益友的感觉,以后人生的路上,一门必修的语言,人与机器交流的途径,也是我实现人生理想的必经之路。 重拾起来,很熟悉,但是回忆其具体的内容,却几乎没什么印象。一遍遍重新敲着简单的语句,一点点积累。路很长,志很远,肩负着以后原创 2017-06-26 00:04:43 · 652 阅读 · 1 评论 -
单链表
单链表:它是一种链式存储的线性表,用一组地址任意的存储单元存放线性表 的数据元素,称存储单元为一个节点。单链表中的一个节点分为两个部分,一个存储数据的数据域,一个指向下一个节点的指针域。 单链表又分为无头节点的单链表和带头节点的单链表。 下面代码实现的是带头单链表template<class T>struct ListNode{ ListNode(const T& data)原创 2017-09-16 19:23:21 · 253 阅读 · 0 评论 -
C++—String类
在C++中常见的一个面试题就是实现一个String类,在面试中我们需要实现的是String类基本的管理资源,能够拥有以下的功能: 1.能够定义变量,不能够赋值和复制等。 2.能够作为函数的参数和返回类型。 3.可以作为STL中容器的数据类型。其次我们需要知道,string类的基本成员函数,如构造函数,拷贝构造函数,赋值操作符的重载,析构函数等。我们需要对这些函数实现String类的功能。在实现原创 2017-09-12 15:59:57 · 243 阅读 · 0 评论 -
C++中重载、重写、重定义
重载: 1>作用域相同。 2>函数名相同,参数列表不同。 3>与返回值无关。 例:同一个类的构造函数和拷贝构造函数构成重载。class A{ A() {} A(const A& a) {}};重写(覆盖): 1>不在同一作用域(分别为基类和派生类)。 2>函数名相同,参数列表相同,返回值相同。 3>基类成员函数必须有virtual关键字修饰。 4>访原创 2017-09-21 19:12:05 · 371 阅读 · 0 评论 -
C++—String类接口的实现
对c++string库部分接口的实现,通过接口间的复用,使个个接口紧密联系,更加简洁。 重要接口Expand()通过检测当前对象容量是否满足要求,对对象进行扩容等操作。 此次实现string全部使用的是深拷贝。#include<iostream>#include<string.h>#include<assert.h>#include<string>using namespace std;原创 2017-11-07 16:04:24 · 424 阅读 · 0 评论 -
C++—string类写实拷贝的实现
>1.本次实现string为写实拷贝版本,参照new[]的形式,我们每次实现申请空间时,多在前面开辟4个字节来存放我们的引用计数,所谓的引用计数就是记录当前空间有多少对象在使用。也就是浅拷贝的形式。>2.为了完善string的实现,我们在不进行修改当前空间时,多个对象可以对公用的空间读取,我们采用浅拷贝的形式对这块空间管理,引用计数的值代表当前空间有多少对象在使用,没有一个对象交出主动权,引用计数减原创 2017-11-07 16:30:00 · 385 阅读 · 1 评论 -
C++设计模式——单例模式
导论:上次在面试的时候,面试官问及设计模式中的单例模式,什么是单例模式。在我把单例模式原理及两种实现方法道出,他问了一个问题,什么情况使用单例模式。在熟悉理论,并没有在实际开发过程中使用,这个问题问死了我。闲暇之余,重新的将这种简单且重要的软件设计模式总结。单例模式:单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个原创 2017-10-22 21:18:26 · 398 阅读 · 0 评论 -
C++智能指针
某种情况下,我们完成了对空间的申请,程序某些问题或者异常的出现,对空间申请完成后并没及时的释放,导致内存泄漏。为此,出现了智能指针的概念,用过类的销毁时调用析构函数的特性,将智能指针封装成一个类,在指针销毁时,同时完成对其空间的释放。Auto_ptr Auto_ptr的缺陷是一个指针给其他指针进行赋值或者拷贝时,会导致指针失效。#pragma once#include<iostream>temp原创 2017-10-16 19:13:41 · 286 阅读 · 0 评论 -
C++继承的各种模型
首先我们需要知道 如果继承中涉及虚函数 ,就会从在虚表,所谓的虚表就是存储虚函数地址的表格。子类继承的话,子类自己的函数会重写所有父类的满足条件的所有函数,其余的虚函数会保存在第一个父类的虚表中。 如果是虚拟继承的话,在菱形继承的条件下,防止的是数据的冗余,最顶层的父类的内容会保存在模型的最底端,他的一级子类会保存一个虚基表,该表存放的是子类对于他的偏移量。 在visual studio201原创 2017-11-30 09:00:35 · 446 阅读 · 0 评论 -
C++中的多态
在学习C++的时候,我们知道C++有三个重要的特性:封装,继承,多态。 那么,我们来看一下C++是怎么实现多态,以及多态实现的对象模型。所谓多态,其实就是“多种形态”。 C++中虚函数的主要作用就是实现多态。简单说父类的指针/引用调用重写的虚函数,当父类指针/引用指向父类对象时调用的是父类的虚函数,指向子类对象时调用的是子类的虚函数。 1.父类的指针或者引用调用重写的虚函数。class B原创 2017-09-24 20:06:05 · 264 阅读 · 0 评论 -
程序员的一生--类
程序员的一生^-^class Programmer{public: Programmer(int count) { while (count--) { Eating(); Coding(); Sleeping(); } } ~Programme原创 2017-08-16 02:11:34 · 380 阅读 · 0 评论 -
C语言实现三子棋
本次程序是三子棋的简单实现,首先我们要了解三子棋的游戏规则,3X3的游戏格子里先,先连成一条线的获胜。根据游戏规则,我们将其规则转换为编程,大致思路是棋盘的打印,电脑放置棋子,玩家放置棋子,对每次放置棋子进行胜负判断。棋盘为3X3,用到了我们C语言中的二维数组,还有其他的循环和判断语句,数组的合理布置和运用帮助我们很好的在一个棋盘上放置了棋子。编写此次程序我们需要添加一个头文件来包含我们的头文件,原创 2017-07-22 00:23:08 · 595 阅读 · 3 评论 -
指针和数组的比较
一.指针和数组的初步了解 什么是指针 在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址, 它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通 过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将 地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。什么是数组 数组就是一段连续可用的内存。 指针int main(原创 2017-07-31 21:28:19 · 563 阅读 · 0 评论 -
C++常见操作符的重载
1. 什么是操作符的重载操作符重载,计算机学科概念,就是把已经定义的、有一定功能的操作符进行重新定义,来完成更为细致具体的运算等功能。操作符重载可以将概括性的抽象操作符具体化,便于外部调用而无需知晓内部具体运算过程。 也就是说我们在以前操作符的基础上进行修改,重新定义,使一个操作符能够操作一个对象以及多个对象。 2. 常见操作符的重载为了演示,我们来定义一个复数类class Complex{原创 2017-08-16 11:27:54 · 357 阅读 · 0 评论 -
函数的调用过程(栈帧)
1. 什么是栈帧C语言中,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。 栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。2. 栈帧的相关名词每一次函数调用,都会为本次函数开辟空间,如何维护这个片栈空间。那么需要指针来维护这片空间。 EBP (extended base pointer)存放指向栈底的指针。 EBP (exten原创 2017-07-28 21:13:56 · 447 阅读 · 0 评论 -
C++类和对象总结
一. 什么是类结构体(struct)是一系列数据的集合,这些数据可能描述了一个物体,也可能是对一个问题的抽象。 类(class)在C++中,结构体中不仅仅可以存放数据,而且可以放置函数。一个类的的大小是多少呢?怎么计算一个类? 类的大小的计算和结构体类似,需要按照内存对其原则,其成员函数不占大小。如下程序。#include<iostream>using namespace std;原创 2017-08-14 15:17:31 · 343 阅读 · 0 评论 -
C++类与对象——日期类
两个日期类比较大小通过对C++类与对象的学习和思考。实际生活问题运用所学,将日期分装成一个类,完成简单的计算。 C++编写一个日期类,可以完成一些基础的日期计算,一个日期是否合法,闰年天数,两个日期相差的天数,日期的比较,日期前后多少天的计算等。#pragma once #include<assert.h>class Date{public: Date(int year=1900,原创 2017-08-24 17:55:45 · 969 阅读 · 0 评论 -
C\C++中的static的区别
通过对C语言以及C++的学习和总结,加上自己对书籍的查阅,总结出了常见的static在C语言/C++的用法。一. C语言中的static修饰变量1. static修饰局部变量 静态局部变量,放在静态储区,生命周期等于整个程序的生命周期。int main(){ static int a; printf("%d",a); return 0;}int main()原创 2017-08-16 01:44:54 · 949 阅读 · 0 评论 -
111
class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow();private slots: void on_toolButton_clicked(); void on_horizontal...原创 2018-05-08 12:23:21 · 261 阅读 · 0 评论