C/C++
文章平均质量分 58
C/C++
玖玖玖_violet
某985在读研究生,学习ing
展开
-
重写 重载 重定义
有继承子类(派生类)重新定义父类(基类)的同名成员(非 virtual 函数) 重写(覆盖)有继承子类(派生类)重写父类(基类)的 virtual 函数函数返回值,函数名字,函数参数,必须和基类中的虚函数一致class A{public://同一作用域下,func1 函数重载public://重定义基类的 func2,隐藏了基类的 func2 方法//重写基类的 func3 函数,也可以覆盖基类 func3。原创 2024-03-11 16:57:34 · 245 阅读 · 0 评论 -
抽象基类和纯虚函数、虚析构函数、纯虚析构函数
在设计时,常常希望基类仅仅作为其派生类的一个接口。这就是说,仅想对基类进行向上类型转换,使用它的接口,而不希望用户实际的创建一个基类的对象。纯虚函数(pure virtual function),使得基类称为抽象类(abstract class). 纯虚函数使用关键字 virtual,并在其后面加上=0。如果试图去实例化一个抽象类,编译器则会阻止这种操作。 当继承一个抽象类的时候,必须实现所有的纯虚函数,否则由抽象类派生的类也是一个抽象类。c++中没有接口的概念,但是可以通过纯虚函数实现接口。虚析构函数作原创 2024-03-11 16:50:49 · 459 阅读 · 0 评论 -
C++ 多态的概述
静态多态(静态联编):函数入口地址 是在 编译阶段 确定(运算符重载、函数重载)注意://如果 Animal没有涉及到继承 函数指针变量 就指向自身sleep。动态多态(动态联编):函数入口地址 是在 运行阶段 确定(虚函数)总结:基类指针、引用 只能访问 子类对象中 基类部分 数据。vfptr虚函数指针 指向的是虚函数表(vftable)多态的分类:静态多态(静态联编)、动态多态(动态联编)使用virtual修饰成员函数 该成员函数就是虚函数。vftable表存放的是 vfptr做保存的函数入口。原创 2024-03-06 17:02:33 · 335 阅读 · 0 评论 -
C++中的const总结
用const修饰的成员函数时,const修饰this指针指向的内存区域,成员函数体内不可以修改本类中的任何普通成员变量, 当成员变量类型符前用mutable修饰时例外。原创 2024-03-03 14:54:03 · 289 阅读 · 0 评论 -
C++模版类
在 C++ 中,和都是模板声明,但它们在模板参数的数量和类型上有所不同。关键字class和typename在这里的使用上基本相同,都用于声明模板参数类型。:这是一个模板声明,它定义了一个带有两个类型参数的模板。NameType和AgeType是这两个类型参数的占位符,可以被任意类型替换。:这种形式通常用于需要两种不同类型参数的情况。例如,你可能有一个类,其中需要两种不同类型的成员变量或方法参数。:这也是一个模板声明,但它只定义了一个单一的类型参数T。T是一个类型参数的占位符,可以被任意类型替换。原创 2023-12-22 11:23:13 · 452 阅读 · 0 评论 -
全局变量为什么没有野指针
全局变量是指在程序的任何地方都可以访问的变量,它们通常存储在静态内存区域,也称为数据段。全局变量的作用域是整个程序,不会因为函数的调用或返回而失效,因此指向全局变量的指针不会出现悬挂指针的情况。悬挂指针是指指向已经销毁的局部变量或动态分配的内存的指针。综上所述,全局变量没有野指针是因为它们具有固定的、合法的、可用的内存地址,且不会因为程序的执行而改变或失效。这样可以避免全局变量的值是随机的或不确定的,从而导致指针出错。,不会被释放或改变,因此指向全局变量的指针总是有效的。全局变量为什么没有野指针?原创 2023-12-04 11:02:03 · 403 阅读 · 0 评论 -
const报错
根据上述原因,我们可以确定,是因为Rectangle类的getUpperRight()和getLowerLeft()函数返回值都不是const限定的,所以,我们只需要修改这俩函数的声明即可。后面在对类中的getXXX()返回类的对象的时候,还是要尽量用const限定。放到我们的代码里,就是下面的两个this的赋值。下面的代码是要重载=运算符,就是将rectangle的左下角和右上角(Point类对象)赋给this的左下角和右上角这两个私有变量。因此,使用-fpermissive将允许编译一些不合格的代码。原创 2023-11-06 14:25:13 · 121 阅读 · 0 评论 -
c语言的缓冲区
缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。原创 2023-10-23 10:40:05 · 82 阅读 · 0 评论 -
C++ 多线程基本使用
Linux 中的 pthread_create() 函数用来创建线程,它声明在<pthread.h>头文件中,语法格式如下:int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(*start_routine) (void *),void *arg);各个参数的含义是:pthread_t *thread:传递一个 pthread_t 类型的指针变量,也可以直接传递某个 pthread_t 类型变原创 2022-05-06 20:19:50 · 1103 阅读 · 0 评论 -
C++运算符重载1-- <<,++,--,*,->
C++运算符重载1-- <<,++,--,*,->原创 2022-05-03 12:41:36 · 1191 阅读 · 1 评论 -
C++——指针
指针的基本学习 有待学习原创 2019-02-08 05:39:00 · 87 阅读 · 0 评论 -
C++——继承
本文探讨public,protected,private继承的关系与用法。继承的格式:class worker : public Person注意是:几种继承之间的关系:main 文件#include &lt;iostream&gt;#include "Person.h"#include "worker.h"using namespace std原创 2019-02-06 06:35:33 · 138 阅读 · 0 评论 -
C++——继承(1) 隐藏
课前补充:C++ 中放在public中的成员可以直接访问,如person中的y在main函数中可以直接访问放在protected中不可以直接访问, 如cout &lt;&lt; person.x &lt;&lt; endl;//访问失败但可以通过成员函数进行访问,如person.eat();class Person{ public: Person(); ~Person();...原创 2019-02-07 05:39:18 · 177 阅读 · 0 评论 -
C++——继承(2) isA
isA子类的对象可以赋值给父类:子类给父类赋值时,只能赋值父类有的数据成员和函数,而无法接受其他的数据指向父类的指针可以指向子类:父类只能指向自己有的数据成员和函数,无法指向自己没有的...原创 2019-02-07 05:53:12 · 340 阅读 · 0 评论 -
C++——继承(3)多继承
MigrantWorker::MigrantWorker(string name,string code):Farmer(name),Worker(code)//初始化列表,依次调用Farmer,Worker的构造函数#include "pch.h"#include <iostream>#include "MigrantWorker.h"using namespace std;...原创 2019-02-26 21:36:32 · 164 阅读 · 0 评论 -
数组——C++
排序还是求下标,范围是a ~ a+n(n为数组长度)1.求最大数组的下标#include <string>#include <iostream>#include <algorithm>#include <sstream>using namespace std;int a[10] = {1,2,3,4};int main(){ ...原创 2019-08-26 00:12:19 · 75 阅读 · 0 评论 -
C++——const关键字
const关键字的作用const定义常量,const flaot pi = 3.14; 其值不能被改变。const与指针常量指针:不能改变指针指向的值,指针可以指向别的变量;int a,b;const int *p = &amp;a;p = &amp;b;指针常量 :指针常量的值不能被修改,指针指向的值可以被修改;int a = 5;int const *p = &amp...原创 2019-02-28 21:21:15 · 126 阅读 · 0 评论 -
C++——基础知识(1)
函数原型:函数声明时形参可以被省略。内联函数(试用于规模较小,频繁调用的函数,以提高运行效率):inline double volume(double)//函数原型在编译的时候将被调用的函数体替换到每一个函数调用处,节省了参数传递,控制转移等开销。对象数组的初始化:数组名【下标】.成员;eg:Complex Xp[2] = {Complex(1,2),Complex(2,4)}...原创 2019-03-05 23:19:46 · 112 阅读 · 0 评论 -
C++基础知识
当一个程序中同一个变量既是全局变量又是局部变量时,在局部变量的作用域内,全局变量被屏蔽,使用::使其在局部变量范围内可见,如:cout << ::x << endl;int *p;//创建一个指向int的指针p = new int(10);//申请一块存放整型编变量的内存空间;p = new int[10];//申请连续的10个整型空间;p指向其首地址;...原创 2019-02-25 21:01:33 · 91 阅读 · 0 评论