首页 > 编程语言 >【侯捷C++面向对象笔记】String类

【侯捷C++面向对象笔记】String类

时间:2024-01-30 20:55:24浏览次数:23  
标签:释放 String C++ 侯捷 new 拷贝 赋值 delete

关键词:动态内存分配,拷贝赋值,new/delete

与Complex类最大的差别:有动态分配的内存空间(char* m_data)

Tip Demo
拷贝赋值函数的一般结构
拷贝赋值时,检测自我赋值非常重要
自己的内存已经释放了,还怎么把自己赋给自己?
new时做了什么?
1.分配内存
2.static_cast为相应类型指针
3.调用构造函数
delete时做了什么?
1.调用析构函数释放m_data
2.释放ps指针
如果对象中存在动态分配的内存空间,必须使用delete[]进行释放

标签:释放,String,C++,侯捷,new,拷贝,赋值,delete
From: https://www.cnblogs.com/rthete/p/17997956

相关文章

  • KY146 魔咒词典C++
    构建一个map,还是查找问题。麻烦点就是要分解输入的过程#include<iostream>#include<string>#include<map>usingnamespacestd;intmain(){stringa,b;map<string,string>m;while(getline(cin,a)){//构建mapb.clear();if(a[0]==......
  • KY27 查找学生信息C++
    用map做查找就行了。#include<iostream>#include<string>#include<map>usingnamespacestd;structnode{stringname;stringx;intage;};typedefstructnodesinfo;intmain(){intn;while(cin>>n){map<......
  • c++ - 实现环形队列
    简介队列的核心思想是FIFO(FirstInFirstOut),即先入先出。入队(新增元素)必须从队尾加入,出队(删除元素)必须从队首出去。实现1、需要实现的方法#pragmaonce#include<iostream>usingnamespacestd;#ifndefMYQUEUE_H#defineMYQUEUE_H//环形队列的实现classMyQueue{......
  • C++ 避免不必要的复制进行优化的思路
    对于函数传入的参数,如果只是需要读取其中的值,一般来说,除了基础的int类型这种,建议声明为const&类型,这样避免不必要的复制操作。特殊的,std::vector进行增加元素时,可以考虑使用vec[0]=std::move(value),通过转移所有权来避免复制操作,因为vec[0]=value也存在复制操作。不......
  • cd String
    动物园(P2375)题目大意给一个字符串,定义\(f_i=max\{x|S_{1...x}=S_{i-x+1...i},x\leqi/2\}\)求出每个\(f_i\)\(n\leq10^6\)思路可以发现\(f_i\)的定义类似kmp中的\(nxt\)指针,所以我们先利用kmp求出不符合\(x\leqi/2\)的\(f_i\),然后我们可以倍增出小于等于的\(......
  • 【C++】c++中的输入输出;缺省;重载;
    1、c++输入输出#include<iostream>//std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中usingnamespacestd;intmain(){ cout<<"Helloworld!!!"<<endl; return0;}//流插入运算符<<在一个语句中可以多次使用,如上面实例中所示,endl用于在行末添加......
  • c++ cast
    static_caststatic_cast(expression)用于非多态类型的低风险转换,如基类和派生类之间的转换,基本数据类型之间的转换(包括任何隐式转换),用户自定义转换,把void指针转换成目标类型的指针等。不进行运行时类型检查,只在编译时检查。具体如下用于类层次结构中基类和派生类之间指针......
  • Visual Studio部署C++矩阵库Armadillo的方法
      本文介绍在VisualStudio软件中配置C++环境下线性代数运算库Armadillo的方法。  首先,我们需要在Armadillo库官网下载其源代码,直接点击下图所示红色框内部分即可。  点击上图所示位置后,将弹出一个新的下载界面;Armadillo库的源代码将随后自动下载。  接下来,我们在Vis......
  • C++多态
    多态的概念多态(Polymorphism)是面向对象编程中的一个重要概念,它允许同一类型的对象在不同的上下文中表现出不同的行为。多态性有两种主要形式:编译时多态(静态多态性)和运行时多态(动态多态性)。编译时多态可以看成是函数重载和运算符重载,之前的文章已经涉及过,不再赘述;所以,下面所提到的多......
  • C++实现直接插入排序、冒泡排序、快速排序、选择排序(含调试程序)
    #include<iostream>#include<fstream>#include<string>#include<vector>#include<algorithm>usingnamespace::std;classSolution{public: //直接插入排序 voidinsertsort(vector<int>&num){ for(inti=1;i<num......