C++高质量双模式贪吃蛇

一个粗糙的二人贪吃蛇联机版实现 联机版贪吃蛇 经过六天的艰苦(抓狂)后,终于完成了一个简单的联机版贪吃蛇制作,我将和大家分享一下制作的流程与感触。 1.题目难点 贪吃蛇是一款很经典的游戏,也是一个难度系数尚可,适宜初学c++者进行挑战的一个项目。在此过程中,主要的难点有两个: 1.如何让蛇动起来 2.如何让两台机器可以随时保持数据的交换 2.基本思路 对于电脑来说,蛇是不可能一点点蠕动的。所以在我的思考中, 阅读详情

按道理来说,想对蛇的位置刷新要用清空屏幕,但那样会闪屏。

因此我用了一项新技术:队列储存法,具体作用请看程序。

小小蒟蒻,代码可能有点繁琐,请谅解

/*支持一下吧 作者:Computer_Devon*/ 
#include<bits/stdc++.h>
#include<windows.h>
#define VK_z 0x25	//左键数值 
#define VK_x 0x28	//下键数值 
#define VK_y 0x27	//右键数值 
#define VK_u 0x26	//上键数值 
#define VK_sh 0x20	//空格键数值 (加速) 
#define VK_en 0x0D	//回车键数值 
#define VK_c 67		//C键数值(减速) 
using namespace std;
int fx=0,mx,my,jx,jy,len=-1,ttt=100;
bool sm,aajj,st,sss,_map_[100][100];
vector<long long> sx,sy;	//队列定义 
/*支持一下吧 Computer_Devon*/ 
void winSize(int lines_height,int cols_width){		//控制屏幕 
    char cmd[100];
    sprintf(cmd,"mode con cols=%d lines=%d",lines_height,cols_width);
    system(cmd);
}
void aj(){		//键位判断 
    if(GetAsyncKeyState(VK_u)&&fx!=2&&aajj==0) fx=1,aajj=1;
    if(GetAsyncKeyState(VK_x)&&fx!=1&&aajj==0) fx=2,aajj=1;
    if(GetAsyncKeyState(VK_z)&&fx!=4&&aajj==0) fx=3,aajj=1;
    if(GetAsyncKeyState(VK_y)&&fx!=3&&aajj==0) fx=4,aajj=1;
    if(GetAsyncKeyState(VK_sh)&&GetAsyncKeyState(VK_c)) ttt=100;
    else if(GetAsyncKeyState(VK_c)) ttt=200;
    else if(GetAsyncKeyState(VK_sh)) ttt=50;
    else ttt=100;
}
/*支持一下吧 作者:Computer_Devon*/ 
void go(int x,int y){		//控制光标位置 
    HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
    COORD c={x,y};
    SetConsoleCursorPosition(hOut,c);
}
void no(){		//隐藏光标 
    CONSOLE_CURSOR_INFO cursor_info={1,0}; 
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
/*支持一下吧 作者:Computer_Devon*/ 
void COLOR(string c){		//控制颜色 
    if(c=="GREEN") SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
    if(c=="RED") SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
    if(c=="BLUE") SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
    if(c=="YELLOW") SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
}
void _map(int x,int y){		//生成地图 
    for(int i=2;i<=x*2+4;i=i+2){
        go(i,2);
        cout<<"■";
        go(i,y+3);
        cout<<"■";
        Sleep(5); 
    }
    for(int i=2;i<=y+3;i++){
        go(2,i);
        cout<<"■";
        go(x*2+4,i);
        cout<<"■"; 
        Sleep(20);
    }
}
/*支持一下吧 作者:Computer_Devon*/ 
void csh(int X,int Y){		//初始化蛇头位置 
    COLOR("YELLOW");
    int x=1,y=1;
    while(x%2==1){
        x=rand()%(X*2);
    }
    y=rand()%Y;
    go(x+4,y+3);
    cout<<"□"; 
    sx.push_back(x+4);
    sy.push_back(y+3);
}
/*支持一下吧 作者:Computer_Devon*/ 
void fs(){		//控制积分位置 
    COLOR("GREEN");
    int l=40*2;
    jx=1;
    while(jx%2==1){
        jx=rand()%l;
    }
    jy=rand()%40;
    jy+=3;
    jx+=4;
    go(jx,jy);
    cout<<"◎";
}
/*支持一下吧 作者:Computer_Devon*/ 
void yd(){		//移动() 
    if(fx==1){
        COLOR("YELLOW");
        if(_map_[sx.back()][sy.back()-1]==1){
            sm=1;
            return;
        }
        if(sy.back()-1==2){
            if(sss==0){		//模式转换 
                sm=1;
            }
            else{
                go(sx.back()+1,sy.back());		 //增加蛇头 
                cout<<"\b "<<" ";
                go(sx.back(),sy.back());		
                cout<<"■";
                _map_[sx.back()][my+2]=1;
                sx.push_back(sx.back());
                sy.push_back(my+2);
                go(sx.back(),sy.back());
                cout<<"□";
                if(st!=0){
                    go(sx.front()+1,sy.front());		//删除蛇尾
                    cout<<"\b "<<" ";
                    _map_[sx.front()][sy.front()]=0;		
                    sx.erase(sx.begin()+0);		//删除蛇尾坐标 
                    sy.erase(sy.begin()+0);
                }
                Sleep(ttt);
            }
            return;
        }
        go(sx.back()+1,sy.back());
        cout<<"\b "<<" ";
        go(sx.back(),sy.back());
        cout<<"■";
        _map_[sx.back()][sy.back()-1]=1; 
        sx.push_back(sx.back());
        sy.push_back(sy.back()-1);
        go(sx.back(),sy.back());
        cout<<"□";
        if(st!=0){
            go(sx.front()+1,sy.front());
            cout<<"\b "<<" ";
            _map_[sx.front()][sy.front()]=0;
            sx.erase(sx.begin()+0);
            sy.erase(sy.begin()+0);
        }
        Sleep(ttt);
    }
    if(fx==2){
        COLOR("YELLOW");
        if(_map_[sx.back()][sy.back()+1]==1){
            sm=1;
            return;
        }
        if(sy.back()+1==my+3){
            if(sss==0){
                sm=1;
            }
            else{
                go(sx.back()+1,sy.back());
                cout<<"\b "<<" ";
                go(sx.back(),sy.back());
                cout<<"■"; 
                _map_[sx.back()][sy.back()]=1;
                sx.push_back(sx.back());
                sy.push_back(3);
                go(sx.back(),sy.back());
                cout<<"□";
                if(st!=0){
                    go(sx.front()+1,sy.front());
                    cout<<"\b "<<" ";
                    _map_[sx.front()][sy.front()]=0;
                    sx.erase(sx.begin()+0);
                    sy.erase(sy.begin()+0);
                }
                Sleep(ttt);
            }
            return;
        }
        go(sx.back()+1,sy.back());
        cout<<"\b "<<" ";
        go(sx.back(),sy.back());
        cout<<"■"; 
        _map_[sx.back()][sy.back()]=1;
        sx.push_back(sx.back());
        sy.push_back(sy.back()+1);
        go(sx.back(),sy.back());
        cout<<"□";
        if(st!=0){
            go(sx.front()+1,sy.front());
            cout<<"\b "<<" ";
            _map_[sx.front()][sy.front()]=0;
            sx.erase(sx.begin()+0);
            sy.erase(sy.begin()+0);
        }
        Sleep(ttt);
    }
    if(fx==3){
        COLOR("YELLOW");
        if(_map_[sx.back()-2][sy.back()]==1){
            sm=1;
            return;
        }
        if(sx.back()-2==2){
            if(sss==0){
                sm=1;
            }
            else{
                go(sx.back()+1,sy.back());
                cout<<"\b "<<" ";
                go(sx.back(),sy.back());
                cout<<"■"; 
                _map_[sx.back()][sy.back()]=1;
                sx.push_back(mx*2+2);
                sy.push_back(sy.back());
                go(sx.back(),sy.back());
                cout<<"□";
                if(st!=0){
                    go(sx.front()+1,sy.front());
                    cout<<"\b "<<" ";
                    _map_[sx.front()][sy.front()]=0;
                    sx.erase(sx.begin()+0);
                    sy.erase(sy.begin()+0);
                }
                Sleep(ttt);
            }
            return;
        }
        go(sx.back()+1,sy.back());
        cout<<"\b "<<" ";
        go(sx.back(),sy.back());
        cout<<"■"; 
        _map_[sx.back()][sy.back()]=1;
        sx.push_back(sx.back()-2);
        sy.push_back(sy.back());
        go(sx.back(),sy.back());
        cout<<"□";
        if(st!=0){
            go(sx.front()+1,sy.front());
            cout<<"\b "<<" ";
            _map_[sx.front()][sy.front()]=0;
            sx.erase(sx.begin()+0);
            sy.erase(sy.begin()+0);
        }
        Sleep(ttt);
    }
    if(fx==4){
        COLOR("YELLOW");
        if(_map_[sx.back()+2][sy.back()]==1){
            sm=1;
            return;
        }
        if(sx.back()+2==mx*2+4){
            if(sss==0){
                sm=1;
            }
            else{
                go(sx.back()+1,sy.back());
                cout<<"\b "<<" ";
                go(sx.back(),sy.back());
                cout<<"■"; 
                _map_[sx.back()][sy.back()]=1;
                sx.push_back(4);
                sy.push_back(sy.back());
                go(sx.back(),sy.back());
                cout<<"□";
                if(st!=0){
                    go(sx.front()+1,sy.front());
                    cout<<"\b "<<" ";
                    _map_[sx.front()][sy.front()]=0;
                    sx.erase(sx.begin()+0);
                    sy.erase(sy.begin()+0);
                }
                Sleep(ttt);
            }
            return;
        }
        go(sx.back()+1,sy.back());
        cout<<"\b "<<" ";
        go(sx.back(),sy.back());
        cout<<"■"; 
        _map_[sx.back()][sy.back()]=1;
        sx.push_back(sx.back()+2);
        sy.push_back(sy.back());
        go(sx.back(),sy.back());
        cout<<"□";
        if(st!=0){
            go(sx.front()+1,sy.front());
            cout<<"\b "<<" ";
            _map_[sx.front()][sy.front()]=0;
            sx.erase(sx.begin()+0);
            sy.erase(sy.begin()+0);
        }
        Sleep(ttt);
    }
    aajj=0;
}
/*支持一下吧 作者:Computer_Devon*/ 
int main(){
    winSize(40,10);		//初始界面 
    srand(time(NULL));
    go(12,1);
    COLOR("GREEN");
    cout<<"贪吃蛇";
    go(11,3);
    COLOR("RED");
    cout<<"经典模式"; 
    COLOR("BLUE");
    go(11,4);
    cout<<"无限模式";
    go(6,6);
    COLOR("YELLOW");
    cout<<"--按下Enter后开始--";
    sss=0;
    go(9,4);
    cout<<"\b ";
    go(10,4);
    cout<<"\b ";
    go(8,3);
    cout<<"=>";
    while(!GetAsyncKeyState(VK_en)){		//判断模式 
        no();
        if(GetAsyncKeyState(VK_x)&&sss!=1){
            sss=1;
            go(9,3);
            cout<<"\b ";
            go(10,3);
            cout<<"\b ";
            go(8,4);
            cout<<"=>";
            Sleep(ttt);
        } 
        if(GetAsyncKeyState(VK_u)&&sss!=0){
            sss=0;
            go(9,4);
            cout<<"\b ";
            go(10,4);
            cout<<"\b ";
            go(8,3);
            cout<<"=>";
            Sleep(100);
        } 
    }
    my=40,mx=40; 		//初始化地图 
    Sleep(1000);
    system("cls");
    winSize(mx*3-10,my*2-35);
    if(sss==0){
        COLOR("RED");
    }
    else{
        COLOR("BLUE");
    } 
    _map(mx,my);
    csh(mx,my);
    go(35,1);
    cout<<"分数:";
    while(1){		//运行主程序 
        no();
        aj();
        if(st==0){
            fs();
            st=1;
            len++;
            COLOR("YELLOW");
            go(41,1);
            cout<<len;
        }
        COLOR("GREEN");
        go(jx,jy);
        cout<<"◎";
        if(sx.back()==jx&&sy.back()==jy){
            st=0;
        }
        yd();
        if(sm==1){
            break;
        }
    }
    Sleep(1000);		//结束程序 
    system("cls");
    go(32,45);
    cout<<"最终分数:"<<len; 
    return 0;
}
/*支持一下吧 作者:Computer_Devon*/ 

C++ 双人贪吃蛇 这篇代码基于博主的“C++ 贪吃蛇基本算法”,加入第二只蛇让他移动并不难,但考虑到要让两只蛇的移动互不干扰那还真是破事真多。博主将“C++ 贪吃蛇基本算法”中的while(1)改成了goto,以用来将两条蛇的计数器分开,并加入了变量“move”来判断按键是操纵谁。在这篇代码中,switch()函数可能阅读起来非常困难,因为蛇2输入的按键与地图上的字符不匹配,所以这篇代码看起来并不是很明了。由于太麻烦 阅读详情

相关推荐

c语言贪吃蛇游戏双人对战版源码

贪吃蛇 。。。。。。。。。。。。。。。。。。。。。。。。

用C++语言实现贪吃蛇游戏

写在前面 用C++语言写游戏再适合不过了,当然不是因为用它写起来简单,(相反那并不简单),但是其性能绝对是其他语言没法比的。所以这里我会用C++实现一个贪吃蛇的游戏。当然我可能有意隐瞒了你,因为我们不仅仅是用C++纯语言来干这件事,那会很别扭,因为我们需要图像渲染、声音、甚至是碰撞检测(我最喜欢的一个版块)!所以仅仅用语言是不够的。 (注:在文章最后我会给出两个版本的贪吃蛇源码及涉及到的一些资源

razorEdge的博客 1万+

从Excel到‘一张图’办案:手把手教你用AbutionGraph构建公安经侦知识图谱(含数据建模避坑指南)

本文详细介绍了如何利用AbutionGraph时序图数仓技术,将公安经侦领域的Excel、银行流水等碎片化数据转化为可交互的知识图谱。通过数据清洗、实体关系模型设计、时序数据处理等步骤,实现高效智能分析,提升办案效率。特别包含数据建模避坑指南和实战案例,助力公安金融案件侦破。

weixin_33702545的博客 342

双人贪吃蛇小游戏C++原创

大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang /*贪吃蛇*/ #include<stdio.h> #include<time.h> #include<conio.h> #include<stdlib.h> #include<windows.h> char qipa...

weixin_30846599的博客 790

在 Ansys CFX Pre 中配置 RGP 表的分步指南

掌握在 Ansys CFX Pre 中设置 RGP 表的技巧,以优化仿真精度和效率。

jkh920184196的博客 1664

GEO芯片数据下载和探针ID转换(保姆级教程)

R语言安装、GEO芯片数据下载、探针ID转换

qq_43138237的博客 3万+

Visual Studio C++/C 游戏——双人贪吃蛇 实现方法+代码讲解+算法优化+成功展示+源代码+总结(超详细,适合小白)

C++/C小游戏 双人贪吃蛇——金蛇狂舞 课程设计作业分享 源码见文末 一、问题描述 把数据结构中的基本知识点,如栈、队列、线性表、图、树等运用到实际的问题当中,以小游戏或小工具等程序方式呈现,要求理解基本结构并能拓展,最后达到应用的目的。 二、准备工作 使用Audacity对所需音频进行处理并导入目标文件夹 使用Photoshop将所需图片素材进行编辑与格式转换 使用 2019 Visual Studio Community集成环境C++程序开发功能进行游戏设计 ...

weixin_44458631的博客 9747

k8s架构、工作流程、集群组件详解

Kubernetes(简称K8s,是因为 k 和 s 之间有八个字符)是一个开源的容器编排平台,用于管理云平台中多个主机上的容器化应用程序。它提供了一种机制,用于自动化部署、扩展和管理容器化应用程序的集群。Kubernetes的目标是让部署容器化应用程序变得简单高效。它提供了应用程序部署、规划、更新和维护的基本机制,同时具备强大的扩展性和可靠性。Kubernetes采用主从设备模型(Master-Slave架构),其中Master节点负责核心的调度、管理和运维任务,而Slave节点负责运行应用程序的容器。

qq_51545656的博客 4382

C++ 写贪吃蛇 简易的贪吃蛇源码【加入新模式:人机对战】 简单易懂 画面精美

C++ 贪吃蛇 C++ 贪吃蛇 all.h 最初版(1.0.0) 最新版(1.2.0) exe文件下载 喜欢就加个关注吧! 我们先思考贪吃蛇如何运作: 无非就四种情况 1. 画蛇 2. 直行 3. 转弯 4. 吃到食物 有些人可能写出来的程序是一闪一闪的,很难看。因为多次清屏的缘故,画蛇其实不用每次清屏画蛇。 其实完全可以将蛇尾给清除,比如几个...

XSamsara的博客 AFO 1万+

C# ArcGIS Engine二次开发——实现“加载shp文件”

private void AddShpDataToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog OpFileDialog=new OpenFileDialog();//OpenFileDialog:打开文件对话框 OpFileDialog.Title="添加矢量数据"; OpFileDialog.Filter="(*.shp)|*.shp";//filter:过滤器;"(*.shp)|*.shp"

weixin_42191203的博客 5254

Netty UDP

UDP是一种无连接的协议,它并不在通信双方之间建立连接,而是直接将数据包从发送端发送到接收端。UDP不保证数据包的可靠传输,也不保证数据包的顺序,因此其传输速度通常比TCP快,且系统开销较小。然而,这也意味着UDP在某些情况下可能会丢失数据包或数据包到达的顺序错乱。

王小工小工历程 2027

深挖C++:类和对象(中)

(先进后出)

xys_678的博客 242

5分钟搞定三网话费余额查询:手把手教你用PHP+HTML搭建查询系统(含API调用避坑指南)

本文详细介绍了如何使用PHP+HTML快速搭建三网话费余额查询系统,涵盖API调用避坑指南、前端UI设计及性能优化。通过统一处理移动、电信、联通三大运营商接口差异,实现高可用查询功能,并提供安全防护与生产部署建议,帮助开发者高效构建稳定可靠的话费查询工具。

weixin_29016833的博客 259

C++移动构造函数详解

移动构造函数是C++11引入的一种特殊构造函数,用于从临时对象(右值)"窃取"资源来初始化新对象,而不是进行昂贵的深拷贝。char* data;public:// 移动构造函数:参数是右值引用 &&// 关键:把源对象的资源置空。

拒绝AI文,努力在AI时代写出感动人心的好文章 391

从 0 到 1 打造一个“超级 IP 智能体”

这篇文章介绍了一个"超级IP智能体"的技术架构和实现方案。该项目构建了一个多模态内容生成流水线,主要流程包括:1)视频下载和音频提取;2)语音识别转换为文字稿;3)使用大语言模型对文案进行仿写和润色;4)语音合成;5)数字人口型同步;6)视频后期处理。文章详细介绍了如何使用Python和Hugging Face开源模型搭建环境,并重点展示了视频下载、语音识别(采用Whisper模型)以及文案仿写(使用Qwen1.5-7B-Chat模型)等核心模块的代码实现。所有处理均针对M3芯片Mac优

AI天才研究院 1149

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ThunderKittens 深度解析:一个不基于 MLIR 的 C++ 模板 GPU DSL

Triton 是"让更多人能写 GPU kernel",ThunderKittens 是"让会写的人写得更爽"。前者用 MLIR 换易用性,后者用 C++ 模板换可控性。它们不是替代关系,而是覆盖了 GPU 编程光谱的两端。ThunderKittens 的出现,本质上是对"GPU DSL 必须基于 MLIR"这一默认假设的挑战。编译期类型系统本身就可以是一个强大的 DSL 基础设施,不需要中间 IR,不需要黑盒 pass,也能实现 tile 级抽象和零运行时开销。

Maxwell_Newton的博客 339

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

跟我学c++中级篇—类型定义的方式

本文系统阐述了编程中类型定义的重要性及c++中的实现方式。重点对比了宏定义、typedef与modern using三种机制,指出using在可读性、灵活性和模板支持上的优势,推荐优先使用。同时提醒开发者注意别名滥用、类型歧义、错误信息冗长等问题,强调统一规范与合理设计。最终结论:在现代c++开发中,应以using为主,兼顾简洁性与可维护性,避免陷入命名混乱与编译困境。

fpcc的专栏 71

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【C语言】字符与字符串函数

C语言中字符串为以\0结尾的字符数组,标准库函数基于此约定。本文解析字符串内存布局,详解ctype.h与string.h中字符分类、长度计算、拷贝、比较等函数的使用要点,强调长度判断与越界风险,最后通过命令行待办事项示例整合fgets、sscanf、strncpy、strcmp,展示实际应用中的关键细节。

记录在学习过程中学到的知识 347

C++ 函数模版

模板参数:● template ,T 就是类型占位符,名字可以自定义,习惯用T● 占位符可以在函数返回值、形参、函数内部当作类型使用使用要点模板代码一般写在头文件:编译器需要看到完整模板源码,才能在每个编译单元完成实例化全局函数、类内成员函数都可以写成模板实例化发生在编译阶段,不是运行时隐式实例化:调用时编译器自动推导实参类型,生成对应版本函数。

2501_94041724的博客 304

C++ 运行时多态与虚函数机制全面剖析【面试重点】

构成C++ 运行时多态必须是基类的指针或者引用调用虚函数。被调用的函数必须是虚函数,并且派生类必须对该虚函数完成重写/覆盖(Override)。只有基类的指针或引用才能既指向基类对象,又指向派生类对象(切片机制);而只有完成了虚函数重写,派生类与基类才具备不同的函数行为,达到“指向谁就调用谁”的效果。在类成员函数的前面加上virtual关键字修饰,该成员函数就成为了虚函数。public:// 成员函数前加 virtual 修饰,声明为虚函数。

Fuyo_0209的博客 438

#SQLite 数据库笔记一:(概念 / 终端指令 / SQL 语句 / C 编程 / 回调函数)

数据库 = 数据的仓库,假设数据是海量。能力说明存储数据持久化保存,程序退出数据还在统计数据、分组、排序数据管理增、删、改、查(CRUD)嵌入式设备上也会用数据库(单片机网关、路由器、工业 HMI 都常见),因为 sqlite 体积小、无需服务进程、单文件即可。数据库 = 库 > 表 > 记录(行) > 字段(列)sqlite3 = 开源、C 写的、单文件、免安装、最多 2T 的嵌入式关系型数据库。

lwq20051110的博客 213

C 语言 malloc() 详解与实战 Demo

本文详解C语言malloc()函数,涵盖其语法、内存原理及实战应用。通过动态整数、数组、结构体与链表的Demo,演示如何安全申请、使用与释放内存,强调避免内存泄漏与空指针检查的重要性,帮助开发者掌握动态内存管理核心技能。

tangPHP的博客 372

蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级 备考:莫队算法离线区间查询详解

备赛进行时:第十八届蓝桥杯软件赛报名已于 2026-10-08 10:00 开启、12-18 14:00 截止,省赛定在 2027-04-10(C/C++·Python 程序设计 9:00–13:00);中国电子学会 2026 年 12 月软件编程(C/C++ 一级至十级、Python 一级至六级)考级报名 9/23–12/2 16:00、统考 12-12;全国青少年信息素养大赛 2026—2027 赛季算法应用主题赛也已进入复盘练兵窗口。

IT_Scratch的博客 141

【C++ 基础入门】C++继承(下):问题、底层原理与组合

C++继承(菱形继承的问题、虚继承原理、继承与组合、构造顺序)

2601_96587588的博客 792

【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针

C++类与对象知识(面向过程和面向对象的初步认识,类的初步认识,类的访问限定符及封装,类的作用域、实例化,类的对象模型,this指针)

2601_96587588的博客 885
下一篇: DEV-C++安装教程
Hound1101001
博客等级 码龄3年 10粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值