
C++
另一个喵喵喵
这个作者很懒,什么都没留下…
展开
-
VScode写C++读文件时遇到的问题
vscode读文件原创 2022-09-30 21:51:15 · 1058 阅读 · 2 评论 -
C++抽象类纸上谈兵
插眼,这一块部分以后肯定要在实战中反复强化理解认识的,光是看几遍书感觉没法抓到核心。抽象类的引入因为某些类作为基类,反映了子类的共同特性。但是这些基类没有单独实例化的意义。因此在这些类中,将不具体实现的成员函数声明成纯虚函数(虚函数声明再在后面跟=0)。只要是抽象类必然有不能实现的函数,所以一定有纯虚函数。当其某个子类将所有基类的纯虚函数都覆盖实现后,该子类便成为一个具体的类。...原创 2022-02-21 10:30:44 · 503 阅读 · 0 评论 -
C++多态原理纸上谈兵
继承召唤多态。多态就是多种形态。因继承而生创建出的对象理所当然地拥有其基类的所有成员,所以从本质上来说,它既可以被称为是子类的对象,又可以被称为是父类的对象。如果子类和父类中定义了完全相同的两个成员函数,又对新创建的子类对象调用这个成员函数,那么就会分不清是调用基类的还是子类的。解决办法是虚函数机制。将基类函数标记为virtual虚函数,编译时则暂时将绑定对象这一步滞后(没运行前不知道是子类还是基类),而是做一个向即将绑定的该实际对象的成员函数的间接访问。那么在运行时,就能根据情况选择子类函数还是基类函数原创 2022-02-20 19:42:10 · 385 阅读 · 0 评论 -
C++继承纸上谈兵
子类继承基类,将得到其所有类成员。继承方式不同,访问控制也不同。public、protected、private三种继承方式,相应三种类成员的权限共产生3x3 = 9种访问控制属性(记忆:1、没有哪种继承类型能访问基类private的成员。2、public继承不改变类成员访问属性。3、protected和private把剩下的其他成员改造成和自己一样)。构造函数和拷贝构造函数同样使用冒号语法,调用基类的构造函数。组合与继承的关系。组合是A类成员中有B,继承是B是A的子类。主要问题在于这两个类的性质。组合表示原创 2022-02-20 10:40:54 · 339 阅读 · 0 评论 -
C++对象创建与释放
简单来说,涉及到构造函数,构造函数重载,成员初始化,拷贝构造函数,析构函数。构造函数没有返回值,成功就成功了。失败进行异常处理。所以用ObjectName::ObjectName(){}构造。根据传参不同支持重载。一个构造函数都没有的话会默认一个无参数构造函数,但是一旦有一个及以上的构造函数就没有这个无参构造函数了,所以如果有需求要自己写一个无参版本的构造函数。使用无参构造函数构造一个对象,为了与返回类型为对象的无参函数的声明的语法区分,不能加括号(Date d;想一想,Date d();不就是声明了么)原创 2022-02-19 19:31:13 · 543 阅读 · 0 评论 -
C++类机制认识的螺旋上升过程
C++类机制太有名了,程序员应该都会喜欢这个设计。从最基本的说,类是封装了数据和操作。再不精确地说,定义了一个类,使用它可以在不需要知道内部如何实现的情况下,拿到一坨代码,就能很快地放入参数并使用。以上是初次的直观认识,接下来探讨细节,如声明和定义、访问权限、创建对象。关于成员函数:定义可以在类内也可以在类外。定义在类内就是默认声明内联(内联就是性能优化,不过据说是不超过1行的函数才行),定义在类外要加上类名名空间(如void Date::set())表示该函数属于Date类。常成员函数不能改变对象的值,原创 2022-02-19 17:11:56 · 191 阅读 · 0 评论 -
C++程序结构的螺旋式上升的认识过程
正如任何一个划水躺平的本科生一样,在低年级的专业课上解决完了考试,就逐渐将平时用不到的知识忘得一干二净。现在抽出空来,对这些想来还是比较基础性的知识进行回顾,准确得说是对书上的知识进行适合于本人的归纳和转述,使其内化成长时间不容易忘记的个人技能。废话讲完,进入正题。低年级的时候谈编程,总是一个程序文件,进行基础性的语法训练。在没有接触过真正的大型项目前,一切关于程序工程的设想,都是理论上的。因此下文全部省略前提:书上说。C++程序当然要考虑一个工程。一个完整的程序在没有那么抽象的考虑下,就是一大坨程序文件原创 2022-01-04 15:40:33 · 694 阅读 · 0 评论