类内带有指针,在将一个类的实例化copy给另一个实例化的对象的时候,指针会指向同一块内存,不是我们想要的。这时最好开辟一块堆内存,需要重写赋值=操作运算符。构造函数也要写,因为当实例化一个对象时,可能会对数据成员赋初值,也可能不赋初值,这时,构造涵是可以合写成一个。另外,在参数列表里赋初值时,字面值常量会保存在常量区,指针指向常量区不太安全,最好指向堆区。这时需要开辟堆内存。代码如下:

#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
using namespace std;class MyString{public:MyString(char* cstr = nullptr){//存在堆区,如果直接在构造函数赋值的话,就会存放在字面值常量区,会有warningif (cstr){m_date = new char[strlen(cstr)+1];strcpy_s(m_date, strlen(cstr) + 1, cstr);//m_date[strlen(cstr)] = '\0';}else{m_date = new char[1];*m_date = '\0';}}void operator=(MyString str){        this->m_date = new char[strlen(str.m_date) + 1];strcpy_s(this->m_date, strlen(str.m_date) + 1, str.m_date);}void out(){cout << m_date << endl;}void set(char* str){//m_date = str;delete []m_date;if (str){m_date = new char[strlen(str) + 1];strcpy_s(m_date, strlen(str) + 1, str);//m_date[strlen(cstr)] = '\0';}else{m_date = new char[1];*m_date = '\0';}}private:char*  m_date;};int main(){MyString str1("hello");MyString str2;str2 = str1;str1.set("world");cout << "str1 = ";str1.out();cout << "str2 = ";str2.out();system("pause");return 0;
}

class with pointer相关推荐

  1. 3-runtime 之 Tagged Pointer

    Tagged Pointer 是自从iPhone 5s 之后引入的特性 1 先说一下iOS的内存布局 代码区:存放编译之后的代码 数据段 :字符串常量 : NSString *hello = @&qu ...

  2. C++中Reference与指针(Pointer)的使用对比

    了解引用reference与指针pointer到底有什么不同可以帮助你决定什么时候该用reference,什么时候该用pointer. 在C++ 中,reference在很多方面与指针(pointer ...

  3. 2020-10-26runtime error: member access within null pointer of type ‘struct ListNode‘ (solution.cpp)错

    runtime error: member access within null pointer of type 'struct ListNode' (solution.cpp)错误 /*** Def ...

  4. 理解smart pointer之三:unique_ptr

    unique_ptr最先在boost中被定义,后来被C++标准委员会选中为C++11的feature之一. std::unique_ptr is a smart pointer that retain ...

  5. error: dereferencing pointer to incomplete type

    /******************************************************************************** error: dereferenci ...

  6. assignment makes pointer from integer without a...

    2019独角兽企业重金招聘Python工程师标准>>> warning: assignment makes pointer from integer without a cast 今 ...

  7. Delphi的“Invalid pointer operation“异常的解决办法

    Delphi的"Invalid pointer operation"异常的解决办法 参考文章: (1)Delphi的"Invalid pointer operation& ...

  8. 内存管理-定时器循环、内存布局、tagged pointer、weak指针、copy、自动释放池

    先上代码,我们平时用的定时器,cadisplaylink.nstimer,CADisplayLink.NSTimer会对target产生强引用,如果target又对它们产生强引用,那么就会引发循环引用 ...

  9. golang reflect Pointer 获取 传入的interface信息

    使用反射可以获取到数据的类型信息,reflect.TypeOf()返回的数据类型如下: type rtype struct {size uintptrptrdata uintptr // number ...

  10. linux 内核模块 警告 initialization from incompatible pointer type 解决方法

    android kernel报错: warning: initialization from incompatible pointer type error, forbidden warning:xx ...

最新文章

  1. 基于多种服务的地理位置查询系统
  2. python四十四:面向对象特性:继承
  3. 2018,抢票大作战
  4. python中的运算和运算符
  5. Halcon学习笔记:读取多张图片
  6. 列主元消去法例题详解_高斯列主元消元法解方程组的步骤
  7. 打破传统内容生产 易车玩转综艺原创
  8. Ext使用中问题总结
  9. 机械优化设计进退法c语言程序,机械优化设计powell法程序
  10. 局域网如何找路由器外的计算机,用路由组建小局域网,怎么使局域网之外的计算机共享到打印机?...
  11. 用python设计数独的心得体会_Python生成数独矩阵
  12. Laravel文档梳理9、Blade模板
  13. php在线生成logo,logo在线生成 php在线生成ico文件的代码
  14. 【RNAseq】差异分析
  15. channel的用法
  16. 小瓜讲matplotlib高级篇——坐标轴设置(坐标轴居中、坐标轴箭头、刻度设置、标识设置)
  17. Cucumber之二Gherkin语言学习
  18. 龙蜥社区开源 coolbpf,BPF 程序开发效率提升百倍
  19. Cython(一)安装与使用
  20. 滤波、信号、数字与模拟、金字塔 一看就懂 教程

热门文章

  1. 如何远程配置DHCP服务器
  2. SpringMVC中实现文件上传
  3. [WebApi] 捣鼓一个资源管理器--数据库辅助服务器文件访问
  4. 爱尔兰圣三一大学计算机专业硕士,爱尔兰圣三一学院研究生申请要求
  5. matlab三维怎么转换二维,求助,二维图像如何绕轴旋转成为三维图像
  6. 项目中对axios的全局封装
  7. 能够支持python开发的环境_Windows上使用virtualenv搭建Python+Flask开发环境
  8. linux 读取权限目录权限,文件的读取与写入权限《 Linux 文件与目录权限 》
  9. php反射机制详解,PHP反射机制
  10. sqlSessionc操作数据库增删改无效问题