自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

转载 文件指针偏移的相关函数(rewind ftell fseek)

文件指针偏移的相关函数(rewind ftell fseek)#include "stdafx.h"#if 0----rewindvoid rewind ( FILE * stream );函数功能:将文件指针重新指向一个流的开头。如果一个文件具有读写属性,当我们写完文件,需要读的时候,此时会遇到文件结尾现象。此时就需要 rewind----ftelll

2017-12-12 22:38:16 1228

转载 读文件到链表+界面管理

读文件到链表+界面管理#include "stdafx.h"#include //数据类型typedef struct student{ int num; char name[30]; char sex; float math; float english; float chinese;}Stu;//链表类型typedef struct node{ S

2017-12-12 22:35:41 254

转载 文件的简单加密与解密(不安全)

文件的简单加密与解密(不安全)加密:#if 0文件的加密int _tmain(int argc, _TCHAR* argv[]){ FILE* fpr = fopen("main.cpp", "r"); if (NULL == fpr) return -1; FILE* fpw = fopen("mainsec.cpp", "w"); if (NULL

2017-12-12 21:03:55 397

转载 一次读写一块字符(fread fwrite)

一次读写一块字符(fread fwrite) 文本操作:#include "stdafx.h"#if 0----int fwrite(void *buffer, int num_bytes, int count, FILE *fp)//把buffer指向的数据写入fp指向的文件中//fread(起始地址,最小单元,读取个数,文件句柄)>0----int fread(vo

2017-12-12 20:47:35 1253

转载 一次读写一行字符(fgets fputs)

一次读写一行字符(fputs fgets)#include "stdafx.h"#include #if 0文本操作:----写入(字符串)一行字符:int fputs(char* str,FILE* fp)//str:指向字符串的指针 fp:指向文件流结构的指针//成功则返回0 失败返回EOF----读取(字符串)一行字符:char *fgets(cha

2017-12-12 20:19:32 825

转载 一次读写一个字符(fgetc fputc)

一次读写一个字符(fgetc fputc)#include "stdafx.h"#if 0写往往比较简单,读略微复杂一些,需要判断何时读到文件结尾所有对文件的读,进行判文件结尾都通过相应函数的返回值(EOF)来进行判断,尽量少用feof();文本操作:----写入一个字符 char fputc ( char ch, FILE * stream );//写入成功,返回写入...

2017-12-12 17:28:05 651

原创 文件的创建、关闭及相关指令

文件的创建、关闭及相关指令#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){#if 0----打开文件 FILE * fopen ( const char * filename, const char * mode );filename 为所要打开文件的地址 mode 为要对此文件进行的操作指令//绝对

2017-12-12 17:16:53 295

转载 利用循环打印乘法小九九

利用循环打印乘法小九九#include "stdafx.h"//通常先写外循环,外循环是固定的,为内循环提供循环的终止条件 //循环变量有俩种情况, 第一种,就是提供循环次数使用//循环变量参与了输出,或是运算过程int _tmain(int argc, _TCHAR* argv[]){ int i, j; for (i = 1, j = 9; i < 10; i++, j-

2017-12-12 13:31:38 371

原创 自实现链表的相关操作

自实现链表的相关操作对于将Node* head作为参数传入函数中后,对head的赋值,最终不会改变head的指向,因为一级指针只能改变指向的值,只有二级指针才能改变一级指针的指向#include "stdafx.h"#include <stdlib.h>#include <time.h>typedef struct node{ int data; ...

2017-12-12 11:30:38 284

原创 手动输入数据完成链表的 头插、尾插

手动输入数据完成链表的 头插、尾插#include "stdafx.h"#include typedef struct node{ int data; struct node *next;}Node;#if 0 //头插法完成动态链表的创建与输出//头插法输出列表的是倒序的//head指针的位置永远不变Node *createList(){ No

2017-12-12 09:59:10 428

原创 静态链表的申请(栈上)

静态链表的申请(栈上)#include "stdafx.h"//静态链表(栈上)的申请typedef struct node{ int data; struct node* next; //此处的类型不能用Node只能用struct node 因为Node还没有定义出}Node;int _tmain(int argc, _TCHAR* argv[]){ Node a, ...

2017-12-11 23:59:55 331

转载 其他预处理

其他预处理#include "stdafx.h"#if 0一:<> 系统路径下面去找, where is stdio.h /usr/include"" 先在当前路径下面找,如果找不到,去系统路径下面找。<> 用于系统供的头文件,"" 自定义的头文件,以示区分。多文件编程意义:多文件编程可以至少有两大好处, 一是,方便管理,协同开发。 二是, 便于分享与加密二

2017-12-11 22:22:57 192

转载 条件编译

条件编译#include "stdafx.h"//#ifdef #else #endif(单) #ifndef #else #endif(双) //第一种方式组合的 单路选择以及 双路选择//#if #endif(单) #if #else #endif(双) #if #elif #elif #endif(多) //第二种方式组合的 单路选择 双路选择

2017-12-11 22:18:46 207

原创 宏与宏函数

宏与宏函数#include "stdafx.h"#if 01.宏的本质是,替换2.我们常将短小精悍的函数进行宏化,这样可以嵌入到代码中,减少调用的开销。但是代价就是,编译出的文件可能会变大3.尽量少用宏函数,能看的懂别人写的宏函数即可。C++中的 inline 函数(内联函数)己经取代了宏函数作用----带参数的宏与函数区别如下1.函数调用时,先求实参表达式...

2017-12-11 22:17:58 633

原创 类模版

类模版#include "stdafx.h"#include using namespace std;#if 0如果想模板化,可以 push 和 pop 不同的数据类型。主要由几个因素需要把控。栈中的空间元素类型,压入元素类型,弹出元素类型,三者保持一致即可类模版是类的抽象,类模版实例化以后,就变为类,类就可以生成对象动态数组vector就是类模版实例化的表现vec

2017-12-11 13:32:36 237

原创 函数模版

函数模版#include "stdafx.h"#include using namespace std;#include #if 0----函数模板(template 是语义是模板的意思)语法格式:template返回类型 函数模板名(函数参数列表){ 函数模板定义体}----调用过程:先将函数模版实例化为函数(将所要类型进行替换),然后再发生函数调用

2017-12-11 13:23:45 298

原创 虚函数表 与 虚函数实现多态时应注意的问题

----虚函数表:C++的多态是通过一张虚函数表(Virtual Table)来实现的,简称为 V - Table。在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆写的问题,保证其真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数...

2017-12-10 13:39:47 348

转载 依赖倒置设计原则 实例(组装电脑)

依赖倒置设计原则 实例(组装电脑)#include "stdafx.h"#include using namespace std;class Cpu{public: virtual void run() = 0;};class Memory{public: virtual void run() = 0;};class HardDisk{public:

2017-12-10 13:36:00 295

转载 依赖倒置设计原则 实例(讲故事)

----开闭原则:闭指的是:高层业务的接口高度抽象,不要试图去修改开指的是:如果有新的功能增加的话,通过类来实现----依赖倒置定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象#include "stdafx.h"#include <iostream>using namespace std;#include <s...

2017-12-10 13:34:38 604 2

原创 纯虚函数、虚析构

----纯虚函数的声明: virtual 函数声明 = 01.只有声明,没有实现体 = 0仅仅只是语法表现形式2.含有纯虚函数的类 叫抽象基类 不能实例化(不能生成对象)3.仅仅是为了提供族类的接口 java 中 称此种类为 Interface4.如果子类中没有覆写纯虚函数,那子类也为抽象基类 也不能实例化5.如果子类只是把父类的纯虚函数原封不动拿到内部声明,语法也通不过,拿下来就...

2017-12-10 13:30:44 451

原创 赋值兼容 与 虚函数

赋值兼容是指在需要父类对象的任何地方都可以,使用public子类(private和protected不可以)的对象来替代。赋值兼容是一种默认行为,不需要任何的显示的转化步骤----赋值兼容规则:(父类:shape 子类:circle)子类的对象可以赋值给父类对象。 shapes= c;子类的对象可以初始化父类的引用。 shape &am...

2017-12-10 13:25:26 364

原创 解决多继承三角问题实例(SofaBed)

主函数:#include "stdafx.h"#include <iostream>using namespace std;#include "Sofa.h"#include "Bed.h"#include "SofaBed.h"//为解决//sofabed len wid high 两份数据 冗余// discription() 访问问题...

2017-12-10 13:16:34 391

原创 虚继承、虚基类成员的可见性

虚继承(virtual)的意义:在多继承中,保存共同父类类的多份同名成员,虽然有时是必要的,可以在不同的数据成员中分别存放不同的数据,但在大多数情况下,是我们不希望出现的。因为保留多份数据成员的拷贝,不仅占有较多的存储空间,还增加了访问的困难。为此,c++提供了,虚基类和虚继承机制,实现了在多继承中只保留一份共同成员。虚基类,需要设计和抽象,虚继承,是一种继承的扩展虚继承语法:clas...

2017-12-09 22:24:21 575

原创 子类的初始化顺序

初始化顺序(1).父类初始化(父类的父类初始化等等)(2).类对象初始化(3).子类的初始化(分别调用各自的构造器)主函数:#include "stdafx.h"#include <iostream>using namespace std;#include "student.h"#include "Graduate.h"#include "Doc...

2017-12-09 22:23:59 682

原创 继承方式和访问控制

#include "stdafx.h"#include <iostream>using namespace std;//类内部的private protected public 影响访问权限//继承中 private protected public,//影响父类中的成员在子类中的访问权限,不影响子类现有的成员访问方式//99% 只使用public继承方式#i...

2017-12-09 22:23:33 243

原创 子类的析构顺序

派生类的析构函数的功能是在该对象消亡之前进行一些必要的清理工作,析构函数没有类型,也没有参数。析构函数的执行顺序与构造函数相反,无需指明析构关系,因为析构函数只有一种,无重载,无默参析构顺序:子类->成员->基类#include "stdafx.h"#include <iostream>using namespace std;class A{publi...

2017-12-09 22:23:14 414

转载 父类与子类中的重名问题(shadow)

父类与子类中的重名问题(shadow)#include "stdafx.h"#include using namespace std;//shadow只和函数名有关(函数名相同即可shadow) //与函数的返回值、参数等均无关class Father{public: void dis() { cout << "Father" << endl; }};

2017-12-09 22:22:58 707

原创 子类调用父类中的友元函数

由于友元函数并非类成员,因此不能被继承,在某种需求下,可能希望子类的友元函数能够使用父类中的友元函数。为此可以通过强制类型转换,将子类的指针或是引用强转为父类的引用或是指针,然后使用转换后的引用或是指针来调用基类中的友元函数。#include "stdafx.h"#include <iostream>using namespace std;class Student{...

2017-12-09 22:22:39 2482 2

原创 子类的拷贝构造 与 赋值重载

主函数:#include "stdafx.h"#include <iostream>using namespace std;#include "Student.h"#include "Graduate.h"#if 0//拷贝构造子类::子类(const 子类& another) :父类(another),子类新成员(another.新成员){}...

2017-12-09 22:22:22 876

转载 父类、子类与公有继承

父类与子类#include "stdafx.h"#include <iostream>using namespace std;#include <string>//C++ 通过继承关系 实现了代码的可重用性class Human //父类 共性{public: void eat(string food) { cout <&l...

2017-12-08 12:40:05 695

原创 子类的构造器及构造原则

#include "stdafx.h"#include <iostream>using namespace std;//父类中如果有标配,重载或默认(需包含默认)//子类中可以不用显示的调用父类的构造器//子类只需要对父类负责(初始化父类自己的参数),//不需要对父类的父类负责//父类的父类,由父类负责class A{public: A() { ...

2017-12-08 12:39:46 835

转载 智能指针

智能指针#include "stdafx.h"#include using namespace std;#include //智能指针class A{public: A() { cout << "A()" << endl; } ~A() { cout << "~A()" << endl; } void func() { cout << "s

2017-12-08 12:39:28 183

转载 new与delete的重载

new与delete的重载#include "stdafx.h"#include using namespace std;#include #include //new 和delete的重载//new new[] delete delete[]//适用于极个别情况需要定制的时候才用的到。一般很少用//声明可以不加 参数//void *operator new(size

2017-12-08 12:39:11 214

转载 重载函数操作符() 仿函数

重载函数操作符()  仿函数#include "stdafx.h"#include using namespace std;#include #if 0函数操作符(())-- - 仿函数class 类名{ 返值类型 operator()(参数类型) 函数体}#endifclass Pow{public: int operator()(int

2017-12-08 12:38:29 271

转载 类型转换操作符函数

类型转换操作符函数#include "stdafx.h"#include using namespace std;#include //用类型转换操作符函数进行转换(在自己的类中实现)class Point2D{public: Point2D(int x, int y) :_x(x), _y(y){} void dis() { cout << "(" <<

2017-12-08 12:38:08 230

转载 类型转换构造函数

类型转化构造函数#include "stdafx.h"#include using namespace std;#include //用类型转换构造函数进行类型转换class Point2D{public: Point2D(int x, int y) :_x(x), _y(y){} friend class Point3D; //设置友元类private:

2017-12-08 12:37:46 313

转载 运算符重载的俩边为不同类的对象

运算符重载的俩边为不同类的对象#include "stdafx.h"#include using namespace std;#include #if 0运算符重载实践结论:1,一个操作符的左右操作数不一定是相同类型的对象,这就涉及到将该操作符函数定义为谁的友元,谁的成员问题。2,一个操作符函数,被声明为哪个类的成员,取决于该函数的调用对象(通常是左操作数)。

2017-12-08 12:37:28 1030

转载 流输入>>、流输出<<作为友元重载

流输入>>、流输出#include "stdafx.h"#include using namespace std;//流输入输出重载class Complex{public: Complex(float x = 0, float y = 0) :_x(x), _y(y){} void dis() { cout << "(" << _x << "," << _y

2017-12-08 12:36:56 273

转载 单目运算符-作为成员重载

单目运算符-作为成员重载#include "stdafx.h"#include using namespace std;//单目运算符重载//M# #M ++a a++//operator#(L); 作友元//L.operator#(); 作成员class Complex{public: Complex(float x = 0, float y = 0) :_x(

2017-12-08 12:36:24 649

转载 单目运算符前++与后++的重载

单目运算符前++与后++的重载#include "stdafx.h"#include using namespace std;//重载前++ 与 后++//返回对象和引用:优先考虑返回引用 //返回类型加不加const:优先考虑加const类型//运算符重载 按照基础数据类型的用法class Complex{public: Complex(float x = 0,

2017-12-07 17:23:54 316

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除