C++
HotIce0
小白
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
复习C++智能指针
一、概念总体理解即通过存在于栈区的对象的生命周期,控制存在于堆区的存储空间的生命周期。防止内存泄露。二、类别2.1 auto_ptrauto_ptr可以实现最基础的栈区对象控制堆区内存生命周期控制。// 示例一、#include <iostream>using namespace std;class Test{public: Test() { printf("Test() call\n"); } ~Test() {原创 2020-07-19 16:13:05 · 966 阅读 · 0 评论 -
复习C++ static关键字
static 关键字实际作用改变作用域(变量及函数)改变存储位置及生命周期(相对于变量来说)原创 2020-07-18 13:51:30 · 210 阅读 · 0 评论 -
C++&&C中int类型与指针关系的特别之处
今天,我们来聊聊int类型与指针这两者的特别关系C语言和C++这两父子,有着一个共同的基因。那就是他们都有指针。指针的特点我就几句话概括下吧!有有点也有缺点。优点:因为指针这个概念使得这两种语言非常接近去汇编语言。指针的操作能使得程序运行效率更高。缺点:事物都有两面性,指针能使得程序效率更高是有代价的,那就是在复杂的情况下使得程序员十分难受,调试也是件麻烦事。因为根据地址,我们往往很难原创 2017-02-22 16:35:16 · 1491 阅读 · 1 评论 -
C++学习一类的继承方式的特点
访问限定符有 public protected private这三种的权限依次降低。 public继承方式:基类的public继承到派生类的public下面.基类的protected继承到派生类的protected下面.基类的private不会被派生类继承.protected继承方式:基类的public和proteceted 被继承到派生类的protected下面基类的原创 2017-02-02 14:20:33 · 344 阅读 · 0 评论 -
虚函数,纯虚函数的解释和内部实现&&虚函数表的真实样子
本篇文章由zg51747708曾广 原创,未经允许不可以转载注:本文章内的程序代码全部是在Window 7 sp1 VS2015 Update3上测试在学习C++中我总体感觉比较难理解的概念就是虚函数的理解,而且比较难想到他的内部实现。于是写下这篇博客,来帮助大家更深入的理解虚函数,纯虚函数,虚函数表。希望大家带着批判来阅读,如有错误请私聊我,谢谢!一.虚函数与纯虚函数定义的解释原创 2017-02-24 13:26:02 · 4046 阅读 · 2 评论 -
C++学习一虚析构函数
因为,C++中存在派生类的对象可以赋值给其基类的对象这一特点。就存在一个问题,当在堆中申请一个派生类,用其基类指针去指向,在delete释放内存时,只会调用对应的基类的析构函数,而不会调用派生类特有的析构函数。所以会导致内存泄露,而且这个错误不会被编译器发现。所以为了能释放派生类的内存,就有了,虚析构函数。就是在基类的析构函数前加上virtual ,这样会产生虚析构函数表原创 2017-02-04 13:12:07 · 371 阅读 · 0 评论 -
C++学习一多继承以及特点
C++中存在多重继承和多继承,两者名字相近却是完全不同的两个概念:多重继承:是至少有一个派生类又作为基类被继承。例如A——派生——B ,B——又派生——C。这就是最简单的多重继承。多继承 :是一个派生类继承了两个基类;例如:class Man :public Worker,public Person {public: Man(string name,string code):W原创 2017-02-04 14:00:27 · 812 阅读 · 0 评论 -
解决方法:无法命中断点,还没有为文档加载任何符号
(环境:Win10 Professional 1607. VS2017 Professional)今天,下午在学习MFC编程中,发现在winmain.cpp中设置的一个断点,根本无效。当程序在其他断点停下来时,这里的断点将会显示:无法命中断点,还没有为文档加载任何符号。于是我在网上进行了各种搜索。网上的解决方法部分如下:(这些方法第一,二个可能有用)http://johnsmi原创 2017-03-21 16:42:58 · 5709 阅读 · 1 评论 -
C++学习——虚继承中半菱形继承
如果,在继承中出现使用到,A被B类虚继承成,B由C继承。那么这个时候就类似于菱形继承的半边。AB CD也就是类似上面的A ->C->D的路径,由于C继承A采用的是虚继承,那么编译器会才用菱形继承的内存布置方式,那么这里就必须满足下列的条件之一。1:A拥有默认构造函数。2:D类的构造函数中调用了A类的构造函数。原创 2017-04-24 16:09:45 · 397 阅读 · 0 评论 -
MFC-编写JAVA环境变量配置发现的问题
配置JAVA环境变量实际上是要修改系统的环境变量,MSDN中有许多修改环境变量的函数。调用比如SetEnvironmentVariable()这样的环境变量设置函数。都是无法修改系统的环境变量的,只能改变本进程的环境变量。要修改系统环境变量只能通过修改注册表,并发送同步消息给相关处理程序。下面是MSDN原文:Environment VariablesCalling SetEnv原创 2017-08-30 22:01:08 · 441 阅读 · 0 评论 -
MFC-SaoChat(模仿QQ)聊天软件
本篇文章由:原用户名(zg51747708),现在:骚里骚气 曾广 原创,未经允许不可以转载(我建立的服务器已经不再运行了。源码仅供学习,如果想自己搭建服务器,请安装下面的数据库结构图,建立对应数据库,并且设置好链接字符串) 我的SaoChat账号是51747708哦!添加好友必须对方也在线哦!不然就要提示!大家可以来注册。服务器24小时运行。账号可以是1-11位数,密码1到原创 2017-09-04 17:09:09 · 3871 阅读 · 1 评论 -
MFC-(小工具)JAVA环境变量一键配置工具
源码下载:CRegKey 类操作版本:http://pan.baidu.com/s/1mhO3Q7Awindows api操作版本:http://pan.baidu.com/s/1gfna5Mz编译号的成品下载地址 :http://pan.baidu.com/s/1hrYfkJ6Update:2017年8月30日22:27:修复了,在配置环境变量时,Path环境变量查询失败的B原创 2017-09-03 21:16:58 · 724 阅读 · 0 评论 -
C++学习一走出迷宫
main.cpp//文件中的格式为 前两位数字代表地图 (高度与宽度) 然后两位是 (起点坐标) 然后两位是(终点坐标)//地图上如果是0代表不能走 1代表能走// 真人认知算法#define FILENAME "map.txt"#include "declear.h"#include #include #include using namespace std;using原创 2017-01-31 20:21:23 · 1704 阅读 · 0 评论 -
C++学习一初始化列表的执行顺序
C++中初始化列表的多项是由逗号隔开,逗号运算符的运算顺序是从左到右,但是事实上却相反,初始化列表的运算顺序是从右边到左边。测试方法就是#include #include //结论就是从右到左using namespace std;class test {public: int x; int * p; test(int a):p(new int [x]), x(a) { co原创 2017-01-31 16:35:01 · 1367 阅读 · 1 评论 -
C++学习一菱形继承多文件解决方法
当在对象编程时,多把类的定义和声明放在不同文件中,但是如果在菱形继承时,最顶端的基类的头文件会被编译两次,所以会导致类型重复定义。解决方法:一:在VS2015中可以使用#program once宏来限制编译次数。 二:可能有部分编译器不支持这个宏。那就可以自己用宏定义实现 如下#ifndef HEADERNAME#define HEADERNAME.......原创 2017-02-06 18:36:43 · 495 阅读 · 0 评论 -
C++学习一virtual关键字的使用
//可能有错误希望大家帮忙指出,谢谢virtual关键字,可以使用在特定的成员函数和基类。使用在:virtual使用在析构函数之前能够实现虚析构函数。//也就是在被基类指针指向时,再使用delete销毁对象时,只会执行基类的析构函数,而不会执行派生类的析构函数,可能会造成内存泄露,所以要使用虚析构函数解决这个问题。virtual使用在菱形继承时,第二基类继承顶端基类时使用vir原创 2017-02-07 16:44:38 · 335 阅读 · 0 评论 -
C++学习一虚函数的实现方式
在基类的成员函数中如果有使用virtual关键字修饰的函数,实例化时就会产生一张对应这个类的对象的虚函数表,而这个函数本来应该是函数入口的,而现在变成了虚函数表的入口地址。然后通过虚函数表内找到函数的地址。比如有这样一个类原创 2017-02-07 17:26:39 · 431 阅读 · 0 评论 -
CPP学习一类模版
类模版:当多个类中只存在数据成员的类型有不同时使用。类模版的定义使用如下:templateclass Demo {public: void fun();private:};成员函数如果在类内定义还是和普通的一样去定义。但是如果成员函数要在类外定义,就必须在之前加上:templatevoid Demo::fun() { }也就是都加上template和下面原创 2017-02-18 11:01:23 · 283 阅读 · 0 评论 -
C++学习一错误处理
C++中的错误处理,涉及到try...catch throw来实现。最简单的是void fun() { throw 10;}int main() { try { fun(); } catch(int){ cout << "Error" << endl; } return 0;},这里只是遇到抛出整型的值就进入对应的int型的错误处理。如果要获取到抛出的值就原创 2017-02-10 00:12:53 · 461 阅读 · 0 评论 -
C++学习一错误解决_类型未定义
在C++学习中,使用友元函数时,大多会遇到这样的问题。比如下面的友元全局函数的使用,就存在问题//友元全局函数#include #include #include using namespace std;class Test;void fun(Test & test) { cout << test.m_strName << endl;}class Test { friend原创 2017-02-10 16:07:26 · 4931 阅读 · 1 评论 -
C++学习一静态成员与静态成员函数
注意:静态数据成员,不可以使用初始化列表进行初始化。 静态数据成员一定要初始化。 静态成员函数不可以使用普通数据成员。在C++中类的成员函数或者数据成员,允许是静态的。比如我想用一个成员来记录当前这个类,有多少个对象。那么,这时就需要静态的数据成员。静态成员函数与this指针的关系:普通成员函数都有一个默认的参数。也就是这个对象的this指针。这样能操作自己原创 2017-02-13 01:32:27 · 339 阅读 · 0 评论 -
CPP学习一const修饰符的使用注意
const修饰符,可以说是一种好的编程习惯必须有的关键字。能够起到权限限制的作用,能使得变量,结构体,类等等...在类中使用const尤其要注意。比如下面的代码就是有问题的:class Coordinate {public: Coordinate() { } Coordinate(int x, int y):m_iX(x),m_iY(y) { } Coordinate(c原创 2017-02-22 09:00:45 · 1127 阅读 · 0 评论 -
C++学习一对象数组的初始化
对象数组不可以像如下这样初始化。Rect arrRect[10](1,2,3,4);这样的初始化数组是错的。因为这样的写法,编译器不知道你传的参数是传给哪个成员。但是又不能给每个成员都穿这个参数。所以不可以这样。如果不提供参数那么,这个类必须有默认构造函数。如果一定要给每个成员传参数,就只能使用下面的这种语法。但是数量较大时并不是很合适.Rect arrRect[2]{ Rect(1,原创 2017-02-22 10:13:53 · 1440 阅读 · 0 评论 -
CPP学习一菱形继承特点
CPP的菱形继承的情况,如果不使用虚继承,这将会导致内存中有两份顶端基类的对象。这是内存上的浪费,而且大多数情况我们希望的并不是这样。所以要使用虚继承,这样能使得顶端的基类只有一份。使用方法就是在第二层基类继承时,在public前或者后面加上virtual关键字。Demo:class Person {public: Person(string color = "blue"):m_strCo原创 2017-02-22 12:08:44 · 479 阅读 · 0 评论 -
C++学习—深拷贝与浅拷贝
C++中在类中默认的拷贝函数(系统自动生成的),这就是浅拷贝。只是简单的将成员内容复制。例如下面的代码#include #include using namespace std;class Array {public: int iCount; Array * p = new Array; Array():iCount(1) { cout << "默认构造函数" << endl原创 2017-01-24 15:55:08 · 339 阅读 · 0 评论 -
C++学习一虚继承
当需要使用菱形继承时,会出现这种情况:最顶端的基类被继承了两次,于是在内存中将有两个,而且分别存在。这样一般不符合我们的要求,所以会使用到虚继承。也就是在第一派生类中加入virtual虚继承顶端的基类。以下代码就能很好的证明只要去掉virtual 就会显示两次调用Person的构造函数。这里如果使用虚继承,那么Person会只使用默认值,因为不可能继承两个的值,所以,只使用自己的默认值#i原创 2017-02-06 17:48:33 · 289 阅读 · 0 评论
分享