首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

C++类入门程序源码240717

后端 5.83KB 48 需要积分: 1
立即下载

资源介绍:

C++类入门程序源码240717
#include class Printable{ public: virtual std::string GetClassName() = 0; }; class Entity : public Printable{ public: enum Level : unsigned short{ low = 0, mid, high }; Entity(){ // 构造函数,用于初始化 x = 10; y = 20; std::cout << "Created Entity!" << std::endl; } Entity(int new_x){ // 函数重载:相同的方法名,不同的参数 x = new_x; std::cout << "Created Entity!" << std::endl; } ~Entity(){ // 析构函数,销毁对象时执行,清理堆栈分配的内存 std::cout << "Destoryed Entity!" << std::endl; } void SetLevel(Level lv){ level = lv; } void Move(int xa, int ya){ x += xa; y += ya;} int get_x(){ return x; } int get_y(){ return y; } void Print(){ std::cout << x << " " << y << " " << level << std::endl; } virtual std::string GetType(){ return "Entity"; } // ->虚函数 //virtual std::string GetType() = 0; // ->纯虚函数, //提供接口,强制子函数实现。Entity不可实例化,需实例化子类。 // 如果子类不覆写该函数接口,子类也不可实例化。 std::string GetClassName() override { return "Entity"; } private: // private只有Entity类或者友元类可以访问。protect=可继承private int x; int y; Level level = low; }; class Player : public Entity/* , Printable */{ //继承。父子同时继承同一个类,覆写同一个函数,会出现歧义 public: Player(const std::string& name):Name(name){ } std::string GetName(){ return Name; } void Print(){ std::cout << get_x() << get_y() << Name << std::endl; } std::string GetType(){ return "Player"; } std::string GetClassName() override { return "Player"; } private: std::string Name; }; class Person{ public: Person() : m_Name("Unknown"), m_Score(0){} // 可能需要按顺序写 Person(const std::string& name) : m_Name(name), m_Score(0){} // 这么初始化变量的好处是,不会在该对象作为其他对象的private时被初始化两次,浪费性能。 // eg: 在Entity类:{private: Example m_example; public:m_Example(8);} // 会显示创建了两次对象。 // 如果是:Entity():m_Example(Example){} void GetName(){ std::cout<< m_Name << std::endl; } private: int m_Score; std::string m_Name; }; void PrintName(Entity* entity){ std::cout << entity->GetType() << std::endl; } void Print(Printable* obj){ std::cout << obj->GetClassName() << std::endl; } int main(){ //类的实现和继承 //Entity entity1; //entity1.SetLevel(Entity::high); // enum看作一个命名空间 // Entity entity2(20); // entity2.Print(); // 20 0 0 y没有初始化 // Player player1("Player233"); // player1.Print(); // Player player2(player1.GetName()); // player2.Print(); //虚函数 // Entity* e = new Entity(); // std::cout << e->GetType() << std::endl; // Player* p = new Player("aname"); // std::cout << p->GetType() << std::endl; // Entity* entity = p; // std::cout << entity->GetType() << std::endl; //期望player,但是entity,则需要在entity的GetType加virtual ->虚函数 //无virtual Entity; 有则Player //或者将子函数写为:std::string GetType() override {} //提高可读性,并且当父类中无可覆写函数时会报错提示。 //纯虚函数 Player *p = new Player("aono"); Person p1; p1.GetName(); Person p2("Cherno"); p2.GetName(); // 在栈和堆上创建对象的区别: // 以上都是创建在堆栈里,main()结束后销毁。 // 创建在栈内的数据,在一个作用域结束之后(一对花括号内),里面的内存会被全部销毁。 // 如果不希望对象在某个子函数中创建,还没来得及用就销毁,那就需要在堆中创建对象。 Person *person = new Person("Cherno"); (*person).GetName(); person->GetName(); // 这两种调用方法等效 delete person; }

资源文件列表:

Beginner.zip 大约有8个文件
  1. Beginner/array.cpp 256B
  2. Beginner/class.cpp 4.17KB
  3. Beginner/const.cpp 1.94KB
  4. Beginner/implicit.cpp
  5. Beginner/lambda.cpp 1.83KB
  6. Beginner/new.cpp 589B
  7. Beginner/string.cpp 2.19KB
  8. Beginner/
0评论
提交 加载更多评论
其他资源 gec6818蜂鸣器LED内核模块文件下载(驱动)
gec6818蜂鸣器LED内核模块文件下载(驱动)
buyigua1~2bak
buyigua1~2bak
buyigua1~2bak
基于Python的车牌检测和识别系统源码.zip
基于Python的车牌检测和识别系统介绍: 1.输入原始图片,通过二值化,边缘检测,和基于色调的颜色微调等办法检测出原图中的车牌号的位置; 2.把检测到的车牌(ROI)裁剪,为车牌号的识别做准备; 3.基于裁剪的车牌号,使用直方图的波峰波谷分割裁剪的车牌号(如上图中的第3步) 4.训练机器学习模型做车牌识别,这里训练了2个SVM,一个SVM用来识别省份简称(如 鲁),另一个SVM用来识别字母和数字。 5.通过PyQt5把整个算法封装成GUI程序,并打包发布安装软件。
Navicat软件zip压缩包
Navicat软件zip压缩包
gec6818蜂鸣器LED内核模块文件下载(驱动)
gec6818蜂鸣器LED内核模块文件下载(驱动)
桌面应用开发 + PyQt + Qt Quick + 示例代码 + 快速入门
内容概要 这个资源包含一个完整的PyQt和Qt Quick示例代码项目,演示了如何使用PyQt5和Qt Quick在Python中开发桌面应用程序。项目结构清晰,包含详细的注释和文档,帮助开发者快速上手并理解相关技术。 适用人群 - 桌面应用程序开发者 - Python开发者 - 初学者及中级水平程序员 - 对Qt Quick界面开发感兴趣的开发者 使用场景及目标 - 快速搭建PyQt和Qt Quick开发环境 - 学习如何使用PyQt和Qt Quick创建现代化的桌面应用程序 - 提供实际项目中的代码示例,帮助开发者理解和掌握关键技术 - 用于教学和培训目的,提供完整的项目结构和代码示例 其他说明 资源中包含详细的README文件,说明如何运行和测试项目 提供常见问题及解决方法,帮助用户解决在使用过程中遇到的问题 包含多个示例文件和详细注释,帮助用户更好地理解代码逻辑
《ANSYS+SpaceClaim直接建模指南与CAE前处理应用解析》(第五章实例文件)
学习spaceclaim的同学,苦于找不到本书的练习文件,可以下载
tcpudp-2.1.1
tcpudp调试助手是一个辅助调试UDP/TCP的工具软件,支持TCP Server、TCP Client、UDP等通信模式,为网络调试提供极大的方便。