- 博客(13)
- 收藏
- 关注
原创 C++11新增类型转换
一、静态类型转换:static_cast#include<Windows.h>#include<iostream>using namespace std;class A{public: virtual void Show() { cout << "基类:A\n"; } void role() { cout << "啥也不干!\n"; }};class B :public A{public: void Show() {
2020-08-25 08:57:20
201
原创 那些劝退小白的指针,其实并不难
说到指针,真是让人又爱又恨,爱它是因为指针真的可以为所欲为,恨它是因为对于新手来说,一不小心就晕了。像什么常量指针、指针常量、指针数组、函数指针、二级指针、智能指针。。。。。。其实这么多奇奇怪怪的指针,不管它的语法有多么花里胡哨,本质上都是一个地址。举个栗子一、普通指针 int age = 18; int* p = &age; cout << "age的地址:" << &age << endl; cout << "age的地址:"
2020-08-14 18:55:59
180
原创 遍历vector容器的4种方法
#include<windows.h>#include<iostream>#include<vector>#include<iterator>#include<algorithm>using namespace std;int main(void){ vector<int> v1; for (int i = 0; i < 4; i++) v1.push_back(i); //遍历容器的4种方法 //1.普
2020-08-08 17:35:29
906
原创 类模板与友元函数会擦出什么样的火花
类模板、友元函数,这两个东西单独拿出来大家都不会陌生。那么放一起呢?会发什么奇怪的变化?先来声明一个类模板template<typename T>class A{public: A(T id = 0); T Getid()const; A<T>& operator+(const A<T>& a);private: T id;};然后定义一下成员函数模板template<typename T>A<T>::
2020-08-02 12:09:48
115
原创 装逼利器——虚函数表
多态我们在设计类的时候经常会遇到这样一种情况,即同一个方法在派生类和基类中实现不同的功能,这种行为称为多态。要实现这种效果,有两个方法:1、在派生类中重新定义基类的方法2、使用虚函数先看第一种方法#include<iostream>#include<windows.h>using namespace std;class Father{public: void play() { cout << "跑步\n"; }};class Son :pub
2020-07-28 16:38:48
150
原创 C++图书管理系统1.0
一、项目需求(一)、用户登录(可选择后台管理员或前台管理员)(二)、后台管理员身份1、书籍录入(存入书籍文件)2、借阅人信息录入(存入借阅人信息文件)(三)、前台管理员身份1、记录借书(存入借书信息文件)2、记录还书(存入还书信息文件)二、方案1、设计一个登录菜单2、设计两个界面(前台、后台)3、进入前台或后台之后显示一个子菜单4、设计三个类4.1、书籍类Book4.2、人类People4.3、初始化类Init三、框架四、源代码1、主程序#include<Win
2020-07-21 18:07:24
1321
1
原创 C++类的默认成员函数中的大坑!
前几天改bug的时候发现了其他几个bug,深挖之后发现是个大坑,在这里分享一下避免大家掉坑里。先说第一个bugclass Human{public: Human(const char* name = NULL, int age = 0); ~Human(); Human& operator=(const Human* human);//注意这里是指针!!! friend ostream& operator<<(ostream& os, const H
2020-07-19 19:59:18
180
原创 C++的多重继承与虚基类
多重继承(MI)多重继承是指使用多个基类的继承,可以分为私有MI,保护MI,公有MI。这里要特别强调一下公有MI,因为它将导致一些问题。
2020-07-12 15:27:59
170
原创 码农和大神的区别:一个简单的循环
假设有这样一个需求:1、1000块钱,买100只鸡。2、公鸡50元/只,母鸡30元/只,小鸡10元/3只。有多少种买法?来看一下码农行为:int count = 0;//买法int i = 0;//循环次数for (int x = 0; x < 100; x++){//x表示公鸡的数量 for (int y = 0; y < 100; y++){//y表示母鸡的数量 for (int z = 0; z < 100; z++){//z表示小鸡的数量 if (50 *
2020-07-10 17:34:23
278
原创 C++小游戏——俄罗斯方块
记录一下我的成长历程,这是我学了C++之后,写的第一个程序,现在看看觉得很low,但我不想改,有兴趣的小伙伴可以参考一下。#include<iostream>#include<windows.h>#include<conio.h>//使用getch()函数#include<ctime>#include <stdio.h>using namespace std;HANDLE handle;COORD crd;//坐标const
2020-07-05 18:03:43
1699
原创 智能指针——从根源上解决内存泄漏的问题
一、什么是内存泄漏用new在堆中分配内存后,没有调用delete,然后指针所在的内存因为作用域规则而被释放。这时候堆中分配的内存仍在,但是指向它的指针没了,导致程序的整个生命周期内都无法访问这部分内存,也就是说内存泄漏了。如果程序只运行一次两次,偶尔的内存泄漏,其实问题不大。但是如果程序是一直在运行的,那么连续的内存泄漏,迟早会导致程序崩溃,甚至会导致其他程序的崩溃,因为堆中内存已经耗尽了。例:void test(){ char* p = new char[1024*1000*100];//分配1
2020-06-21 14:57:15
811
原创 C++递增/减运算符前缀格式和后缀格式的区别
区别一++i是左值,i++是右值。区别二实现代码不同++i等同于i=i+1,然后返回的是变量i本身,所以是一个左值。i++是先将i放在一个临时变量中,再执行++i的操作,然后返回临时变量的值,所以是一个右值。所以i++执行速度会比++i慢一点,它多了一个分配内存并赋值的操作。区别三优先级不同例: int i[5] = { 1,3,5,7,9 }; int* p1 = i; int* p2 = i; int* p3 = i; //*和前缀++/--优先级相同,以从右到左的方式结合
2020-06-19 11:18:55
1018
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人