// //Createdby王东梁on2023/9/16. // include<stdio.h> //想要构造一个字符串->数组 //想要处理一个字符串->指针 intmain(){ //s是一个指针,初始化为指向一个字符串常量 //由于这个常量所在的地方,所以实际上s是constchars, //但是由于历史的原因,编译器接受不带const的写法 //但是试图对s所指的字符串做写入会导致严重的后果 //指针:这个字符串不知道在哪里 //处理参数动态分配空间 chars="Hello,World!";//等价于constchars //如果需要修改字符串,应该...

为什么学习MFC 如果你是在Windows平台上做GUI开发,MFC(微软基础类库)是一个很好的选择,毕竟Windows累积用户群庞大,市场接受程度高。但是,学习MFC不仅仅要学习用MFC,还要学习MFC的框架设计思想。很多公司在一些做了很久的项目上,往往都是有自己的类库、自己的框架,我们只需要在其基础上不断的完善和扩展。如果你不了解类库,你是根本无从下手。这也是我们要学习类库、框架设计的原因。 Windows消息机制 要想熟练掌握Windows应用程序的开发,首先需要理解Windows平台下程序运行的内部机制。如果想要更好的学习掌握MFC,必须要先了解Windows程序的内部运行机制,为我...

向导流程 在VS中选择“文件”–“新建”–“项目”: 选择MFC–MFC应用程序,接下来我们创建一个单文档MFC标准类型应用程序。 一路按默认值next,到最后一个页面: MFC自动为我们生成了四个类,它们的继承关系如下: 类视图 文档/视图结构体系 MFC应用程序框架结构的基石是文档/视图体系结构,它定义了一种程序结构,这种结构依靠文档对象保存应用程序的数据,并依靠视图对象控制视图中显示的数据,把数据本身与它的显示分离开。 数据的存储和加载由文档类来完成,数据的显示和修改则由视类来完成。MFC在类CDocument和CView中为稳定视图提供了基础结构。CWinApp、CFr...

MFC是什么? 微软基础类库(英语:MicrosoftFoundationClasses,简称MFC)是一个微软公司提供的类库(classlibraries),以C类的形式封装了WindowsAPI,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。MFC把WindowsSDKAPI函数包装成了几百个类,MFC给Windows操作系统提供了面向对象的接口,支持可重用性、自包含性以及其他OPP原则。MFC通过编写类来封装窗口、对话框以及其他对象,引入某些关键的虚函数(覆盖这些虚函数可以改变派生类的...

生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候也会删除一些自己信息数据保证安全。C中的面向对象来源于生活,每个对象也都会有初始设置以及对象销毁前的清理数据的设置。 构造函数和析构函数 对象的初始化和清理也是两个非常重要的安全问题一个对象或者变量没有初始状态,对其使用后果是未知同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题 c利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。 对象的初始化和清理工作是编译器强制要我们做的事情,因此如果我们不提供构造和析构,编译器会提供 编译器提供的构造函数和析构函数是空实现。 构造...

模板的概念 模板就是建立通用的模具,大大提高复用性 模板的特点:模板不可以直接使用,它只是一个框架模板的通用并不是万能的 函数模板 C另一种编程思想称为泛型编程,主要利用的技术就是模板C提供两种模板机制:函数模板和类模板 函数模板语法 函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。语法: template<typenameT> 函数声明或定义 解释:template—声明创建模板typename—表面其后面的符号是一种数据类型,可以用class代替T—通用的数据类型,名称可以替换,通常为大写字母 include<io...

继承是面向对象三大特性之一我们发现,定义这些类,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候我们就可以考虑利用继承的技术,减少重复代码 继承的基本语法 例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处 普通实现 include<iostream> usingnamespacestd; //Java页面 classJava { public: voidheader() { cout<<"首页、公开课、登录、注册...(公...

运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型 加号运算符重载 作用:实现两个自定义数据类型相加的运算 include<iostream> usingnamespacestd; classPerson{ public: Person(){}; Person(inta,intb) { this->m_A=a; this->m_B=b; } //成员函数实现+号运算符重载 Personoperator+(constPerson&p){ Persontemp; temp.m_A=this->...

成员变量和成员函数分开存储 在C中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上 include<iostream> usingnamespacestd; classPerson{ public: Person(){ mA=0; } //非静态成员变量占对象空间 intmA; //静态成员变量不占对象空间 staticintmB; //函数也不占对象空间,所有函数共享一个函数实例 voidfunc(){ cout<<"mA:"<<this->mA<<endl; } //静态成员函数也不...

封装 封装的意义:将属性和行为作为一个整体,表现生活中的事物将属性和行为加以权限控制 封装意义一 在设计类的时候,属性和行为写在一起,表现事物语法:class类名{访问权限:属性/行为}; 示例1:设计一个圆类,求圆的周长 //1、封装的意义 //将属性和行为作为一个整体,用来表现生活中的事物 //封装一个圆类,求圆的周长 //class代表设计一个类,后面跟着的是类名 classCircle { public://访问权限公共的权限 //属性 intm_r;//半径 //行为 //获取到圆的周长 doublecalculateZC() { //2pir //获取...

函数默认参数 在C中,函数的形参列表中的形参是可以有默认值的。语法:返回值类型函数名(参数=默认值){} intfunc(inta,intb=10,intc=10){ returna+b+c; } //1.如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值 //2.如果函数声明有默认值,函数实现的时候就不能有默认参数 intfunc2(inta=10,intb=10); intfunc2(inta,intb){ returna+b; } intmain(){ cout<<"ret="<<func(20,20)<<endl...

引用的基本使用 作用:给变量起别名语法:数据类型&别名=原名 intmain(){ inta=10; int&b=a; cout<<"a="<<a<<endl; cout<<"b="<<b<<endl; b=100; cout<<"a="<<a<<endl; cout<<"b="<<b<<endl; return0; } 引用注意事项 引用必须初始化 引用在初始化后,不可以改变 引用做函数参数 作...

概述:算法主要是由头文件组成。是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历操作、复制、修改等等体积很小,只包括几个在序列上面进行简单数学运算的模板函数定义了一些模板类,用以声明函数对象。 常用遍历算法 算法简介:for_each//遍历容器transform//搬运容器到另一个容器中for_each 功能描述:实现遍历容器 函数原型:for_each(iteratorbeg,iteratorend,_func);//遍历算法遍历容器元素//beg开始迭代器//end结束迭代器//_func函数或者函数对象 include<iostream> usingnam...

string容器 string基本概念 本质:string是C风格的字符串,而string本质上是一个类 string和char区别:char是一个指针string是一个类,类内部封装了char,管理这个字符串,是一个char型的容器。 特点:string类内部封装了很多成员方法例如:查找find,拷贝copy,删除delete替换replace,插入insertstring管理char所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责 string构造函数 构造函数原型:string();//创建一个空的字符串例如:stringstr;string(constchars);//使...

程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化 C中对文件操作需要包含头文件<fstream> 文件类型分为两种:1.文本文件文件以文本的ASCII码形式存储在计算机中2.二进制文件文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们 操作文件的三大类:ofstream:写操作ifstream:读操作fstream:读写操作 文本文件 写文件 写文件步骤如下:1.包含头文件include2.创建流对象ofstreamofs;3.打开文件ofs.open(“文件路径”,打开方式);4.写数据ofs<<“写入的数据”;5....

多态的基本概念多态是C面向对象三大特性之一 多态分为两类静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态 静态多态和动态多态区别:静态多态的函数地址早绑定编译阶段确定函数地址动态多态的函数地址晚绑定运行阶段确定函数地址 include<iostream> usingnamespacestd; classAnimal { public: //Speak函数就是虚函数 //函数前面加上virtual关键字,变成虚函数,那么编译器在编译的时候就不能确定函数调用了。 virtualvoidspeak() { cout<&l...

重载 方法的重载 重写 函数返回值类型函数名参数列表完全一致称为重写

生活中你的家有客厅(Public),有你的卧室(Private)客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去但是呢,你也可以允许你的好闺蜜好基友进去。 在程序里,有些私有属性也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类访问另一个类中私有成员友元的关键字为friend 友元的三种实现 1.全局函数做友元 include<iostream> usingnamespacestd; classBuilding { //告诉编译器goodGay全局函数是Building类的好朋友,可以访问类中的私有内容 fri...

静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员 静态成员分为: 静态成员变量 所有对象共享同一份数据在编译阶段分配内存类内声明,类外初始化 include<iostream> usingnamespacestd; classPerson { public: staticintm_A;//静态成员变量 //静态成员变量特点: //1在编译阶段分配内存 //2类内声明,类外初始化 //3所有对象共享同一份数据 private: staticintm_B;//静态成员变量也是有访问权限的 }; intPerson::m_A=10; int...

深浅拷贝是面试经典问题,也是常见的一个坑浅拷贝:简单的赋值拷贝操作深拷贝:在堆区重新申请空间,进行拷贝操作 浅拷贝带来的问题 解决办法 include<iostream> usingnamespacestd; classPerson{ public: //无参(默认)构造函数 Person(){ cout<<"无参构造函数!"<<endl; } //有参构造函数 Person(intage,intheight){ cout<<"有参构造函数!"<<endl; m_age=age; m_h...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~