第十二章 类和动态内存分配
来源:互联网 发布:电路设计仿真软件 航空 编辑:程序博客网 时间:2024/05/16 10:49
// 类和动态内存分配
1. 实例原型声明
class StringBad{ private: char *str; int len; static int num_strings; const int text;//对于const 数据成员,必须在执行带构造函数之前初始化。。也就是成员初始化列表 public: StringBad(const char *s); StringBad(); StringBad(const StringBad & st);//复制构造函数,类中如果使用了new,则必须定义复制构造函数 ~StringBad(); StringBad & operator=(const StringBad & st); friend std::ostream & operator<<(std::ostream & os,const StringBad & st);};
2.//重载 = 号
StringBad & StringBad::operator=(const StringBad & st){ if(this == &st) return *this; delete [] str; len = st.len; str = new char[len+1]; strcpy(str,st.str); return *this;}
3.//构造函数
StringBad::StringBad(const char *s){ len = strlen(s); str = new char[len+1];//必须 len+1; strcpy(str,s); num_strings++;}
4.//实例://注:delete 只能释放 new
char *str = "woaini";len = strlen(str); char *str1 = new char[len+1];//1.必须加一。strcpy(str1,str); //2.必须给str1中赋值delete [] str1; // 若上述1,2没有完成 会弹框报错
3.//复制构造函数函数原型定义
StringBad::StringBad(const StringBad & st){//复制构造函数,类中如果使用了new,则必须定义复制构造函数 num_strings++; //如果类中没用使用new,则可以不定义复制构造函数,编译器会自动生成 len = st.len; str = new char[len+1]; strcpy(str,st.str);}
4.//如果没有定义复制构造函数会 怎么样?
(1) StringBad str = "123"; StringBad str1 = str; **//当 str1 调用~StringBad()时会报错,由于delete**(2)void callm(const StringBad str); //做函数形参时 会出错 void callm(const StringBad & str);//定义为引用 时,正常运行
5. //成员初始化列表
//若有这样的函数
注:text 是 const 数据成员
StringBad::StringBad(int qs){ text = qs;**//无效的的,由于text是const数据成员**}//应该改为StringBad::StringBad(int qs):text(qs),len(0)**//const变量必须这样初始化,其他变量也可以用列表初始化**{ ....}
阅读全文
0 0
- 第十二章 类和动态内存分配
- 第十二章 类和动态内存分配
- 第十二章 类和动态内存分配
- 第十二章:类和动态内存分配
- 第十二章 类和动态内存分配
- 第十二章-类和动态内存分配
- 【c++ primer】第十二章 类和动态内存分配
- 第十二天(类和动态内存分配·一)
- 2012/1/27 《C++ Primer Plus》第十二章:类和动态内存分配 学习笔记
- 《C++ Primer Plus(第六版)》(23)(第十二章 类和动态内存分配 复习题和答案)
- 《C++ Primer Plus(第六版)》(24)(第十二章 类和动态内存分配 编程题和答案)
- 《C++ Primer Plus(第六版)》(22)(第十二章 类和动态内存分配 笔记)
- 动态内存分配和类
- 类和动态内存分配
- 类和动态内存分配
- 类和动态内存分配
- 类和动态内存分配
- 第十二章 动态内存
- 设置git本地代理
- cocos--类的创建
- 机器学习中的统计学基础知识
- Linux平台:Alexa语音服务快速入门指南
- MYSQL 学习笔记 之 常用函数汇总
- 第十二章 类和动态内存分配
- java 字符串截取的几种方式 (转自网络)
- Hadoop的性能问题
- Android Framework学习 -- NFC金融
- Redis Cluster深入与实践
- style-transfer的实现(tensorflow)
- 马里奥吃金币、消失
- java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
- Sass and Compass for Designers.pdf 英文原版 免费下载