
c++
文章平均质量分 79
记录c++的学习
三年二班cn
c
展开
-
c++中的继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类或子类,被继承的类称为基类或者父类。继承呈现了面向对象。程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。public ://名字属性 int _age;//年龄属性 }原创 2023-07-18 12:00:14 · 388 阅读 · 1 评论 -
【c++】序列容器之 list
list是可以在常数范围内任意位置进行插入和删除的序列容器,并且该容器支持前后双向迭代。这是基于list的底层数据结构是带头双向循环链表,因此list容器是不支持随即访问的(也就是不能像数组那样使用 [i]下标来访问元素),list访问元素的时间复杂度是线性时间。原创 2023-05-27 18:31:23 · 201 阅读 · 1 评论 -
c++stl序列容器之vector
-------模板类vector是表示大小可变的数组的序列容器,也是使用连续的空间来存储元素,也就意味着可以使用下标来访问元素,和数组一样高效,但与数组不同的是vector的大小是动态改变的,由容器自动处理。为了获得高效的管理空间的能力,vector相比数组需要占用更多的空间。c++11增加了使用列表进行初始化。//使用列表初始化 vector < int > v1;//定义空对象v1,后续可加入int类型元素 vector < int > v2(5 , 100);原创 2023-05-19 14:31:33 · 1191 阅读 · 3 评论 -
string类及常见接口介绍
C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合面向对象的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。string类中还有一些其他的操作,这里不一一列举,大家在需要用到时不明白了查文档即可。原创 2023-05-11 00:30:44 · 516 阅读 · 5 评论 -
c++命名空间
个人对于命名空间的理解:命名空间就像是一个主子,他有很多走狗,一个项目中可以有多个主子,他们各自的走狗名字可以相同,但是担当的作用可以不同,上述例子std命名空间中的cin 和 cout分别是输入输出的作用,但N命名空间中的cout是一个变量。std是c++标准库的命名空间,c++标准库的定义和实现都放在这个命名空间中,其中cout是定义在其中的ostream类(输出流)的对象,cin是定义在其中的istream类(输入流)的对象。std是C++标准库的命名空间,如何展开std使用更合理呢?原创 2023-04-21 21:42:58 · 94 阅读 · 1 评论 -
c++指针悬挂问题
接着函数即将返回,释放局部对象,执行析构函数,先对object2对象的name指针指向空间做释放,然后释放object2的空间,接着对object1做同object2的操作,但是释放object2的name指针指向空间时发生了断点,这是因为在拷贝时,是直接将object1的name成员的值直接赋值给object2的name成员,这两个对象的name指针指向同一块内存空间,导致在析构的时候二次释放,从而引发断点。内置的数据类型的对象可以用等号进行赋值运算,那么类类型的对象可以用等号做赋值运算吗?原创 2023-04-19 18:09:55 · 282 阅读 · 1 评论 -
c++的对象与const
或使用方法:常对象一旦创建成功,其在以后的任何场合都是的(只读的),并且在所有的成员函数中(除了隐式调用的构造函数和析构函数)。几点说明:1.在有些情况下,一定要修改常对象的数据成员的值,ANSI c++考虑到编程的需要,可以,如将上述age声明改为:mutable int age;将age声明为可变的数据成员,这样就2.为什莫构造函数不用声明为const,因为在声明一个常对象时,先调用构造函数对其初始化,对象只有在(也就是创建完成才获得常量属性),所以在构造函数的过程中可以向其数据成员写值。原创 2023-04-19 00:28:19 · 168 阅读 · 1 评论 -
构造函数的初始化列表
对于成员属性是内置的数据类型如,int,char,string,double等,使用初始化列表,和使用普通的赋值语句区别不大,但是对于类类型的成员,使用初始化列表少了一次调用默认构造函数的过程,而是直接调用拷贝构造,这对于。说明:可以看到a初始化的结果并不是我们想要的,这是因为a成员在类中定义在b成员的前面,所以初始化列表中先初始化a,执行a(a_ * b) ,而b还未初始化,从而导致a出现乱码。因此,如果成员初始化依赖其他成员的值,那么要注意初始化顺序,为了避免这个问题,一般按照定义的顺序初始化成员。原创 2023-04-17 00:04:30 · 295 阅读 · 1 评论