c++之旅
文章平均质量分 90
徜徉new
别忘了梦想
展开
-
c++之旅——第一弹
c++过渡原创 2024-02-25 17:47:56 · 519 阅读 · 16 评论 -
c++之旅——第二弹
realloc函数追加的内存不一定是和原来内存连续的,而有可能是逻辑上的连续,因为在使用完开始的内存后,后面的内存也可能会继续被其他代码使用。动态变化的二维数组首先想到的是往数组中括号内填入变量,通过改变变量的值实现动态变化,但填入变量是不支持的,所以想到二级指针。(2),记得在使用完指针开辟的内存后写delete释放内存,否则会造成内存泄漏,积累会导致堆区内存越来越小。堆区:用于动态内存的申请与释放,一般由程序员手动分配和释放,若程序员不释放,则程序结束时由操作系统回收。原创 2024-02-27 17:02:36 · 719 阅读 · 25 评论 -
c++之旅——第三弹
解决同名实体的冲突问题,同名变量可以通过括号的作用域来确定使用的是哪一个变量,而函数和类型(比如自定义的结构体类型)则不可以通过作用域来进行区别,所以使用命名空间来区分。//不建议在命名空间中进行变量的定义,因为引用开放命名空间后可能会导致变量的重命名冲突问题,这样反而更不好管理代码 //空间成员一般有:函数声明,类型定义。(2)、命名空间可以在全局,也可以在局部(命名空间可以接受嵌套定义),但不能在函数内和类中定义!(2)作用域:函数体和命名空间这种用来区分管理的代码区域的就是作用域,后面不加分号。原创 2024-03-03 16:35:49 · 1046 阅读 · 15 评论 -
c++之旅——第四弹
(2),编译:生成.obj二进制目标文件(是源文件生成的,头文件不会生成,头文件对应的定义函数的源文件也是可以生成的),因为.obj文件有大小,头文件里面是类类型的定义和函数的声明,是没有大小的,所以不可以生成有内存的文件。首先提出问题,分析问题的处理流程,将大问题分解成小问题,如果小问题比较复杂,那么就继续的分解为更小的问题,然后解决这些一个一个的小问题来解决大问题,最后解决所有的问题(做好这一步,做下一步,直到做完所有)。(3)、结构体一般用于定义数据这样的类型,比如矩阵之类的(里面一般不定义函数);原创 2024-03-03 16:42:16 · 2191 阅读 · 31 评论 -
c++之旅——第五弹
(2)如果没有去书写拷贝构造,系统提供一个隐式的拷贝构造,可以理解为浅拷贝,浅拷贝只拷贝物理内存,不会拷贝逻辑内存,也就 是不会拷贝类中指针开辟的堆内存 如果类中的属性有指针,且会动态开辟,必须重写拷贝构造,去书写深拷贝(也就是自定义拷贝构造)//做在定义对象的时候想要做的事情,包括对数据成员赋值,当然构造函数除了对创建的对象进行初始化数据之外,还可以往里面写入类的成员函数的调用,用于在对象创建使就自动执行这个函数。它是一种特殊的函数,主要用来在创建类对象时初始化对象,即为对象的成员变量赋初始值。原创 2024-03-07 23:07:43 · 2128 阅读 · 33 评论 -
c++之旅——第六弹
常量的初始化:在类中直接赋值,但是是新写法,在老版本的编译器中可能会报错,所以想使用另一种初始化方式:借鉴静态成员的初始化方式,我们在类外进行常量成员的初始化,但是这样写会报错,因为相当于在类中声明了一次常量成员,在类外初始化时相当于进行了第二次声明,这样就会报错。②因为成员初始化列表只能初始化类对象的数据成员,而对成员函数无法进行调用,而构造函数就可以在里面写上这个普通成员函数来进行调用,这一点是成员初始化列表所做不到的,但是成员初始化列表可以对构造函数进行调用。静态成员是在类的整个生命周期中存在的。原创 2024-03-12 12:42:25 · 1012 阅读 · 54 评论 -
c++之旅第七弹——继承
(2)如果基类中某一成员是私有属性,那么无论使用那种继承方式,在派生类中也是无法进行直接访问的,要访问也只能通过公有接口来进行访问,如果类B继承类A时继承方式是私有,而基类A中成员的属性为公有,那么在派生类B中是可以进行基类A中该成员的访问的,而当派生类C继承B时使用任何继承方式都无法对基类A中的该成员进行访问,这是因为B继承A时使用私有继承方式,相当于A类是B类的私有属性成员。4.构造顺序:虚基类->基类->派生类,虚基类的无名对象是在继承的最终类对象中的最后部分的内存,且只有一份它的内存。原创 2024-03-17 11:04:48 · 1112 阅读 · 78 评论 -
c++之旅第八弹——多态
使用虚函数继承时的注意事项:使用虚函数后的继承,如果派生类中有自己的虚函数(和基类的虚函数是非同名的)是会在继承的基类的虚函数表的基础上往后添加的,而且由于这个派生类新添加的虚函数是属于派生类的,所以基类是无法访问这个派生类中新添加的虚函数的;但是如果派生类中写有和基类的虚函数同名的函数时,这个函数是会替代虚函数表中的基类虚函数的(同名函数在基类必须有virtual关键字,在派生类中就是可有可无的),也就是在虚函数表进行修改,将基类的同名函数首地址改为派生类的同名函数首地址。也叫晚期联编或动态约束。原创 2024-03-23 10:14:33 · 913 阅读 · 60 评论 -
c++之旅第九弹——模版
原因:因为.cpp文件是会参与编译的,而类模板在写的时候没有已知类型,故写在.cpp文件中的类中函数定义无法参与编译,也就相当于没有函数定义了;也是正确的,因为显式指定类型后就生成了对应类型的实体函数,和普通函数一样,普通函数在编译器下可以进行可转换参数的转换,故此时也是正确的。(2)template的类型参数T可以直接表示指针类型,但这样使用时会增加使用数据的不便,因为每次使用数据时都必须解引用进行操作,相对于普通类型(如int)的直接使用方式更加繁琐,所以一般也不会这样进行类型参数的使用。原创 2024-04-11 14:11:28 · 824 阅读 · 42 评论