第十二章 类和动态内存分配
2017-11-19 11:27
183 查看
// 类和动态内存分配
1. 实例原型声明
2.//重载 = 号
3.//构造函数
4.//实例://注:delete 只能释放 new
3.//复制构造函数函数原型定义
4.//如果没有定义复制构造函数会 怎么样?
5. //成员初始化列表
//若有这样的函数
注:text 是 const 数据成员
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变量必须这样初始化,其他变量也可以用列表初始化** { .... }
相关文章推荐
- 第十二章:类和动态内存分配
- 第十二章 类和动态内存分配
- 【c++ primer】第十二章 类和动态内存分配
- 第十二章-类和动态内存分配
- 第十二章 类和动态内存分配
- Linux网络管理员手册(12) 第十二章 管理Taylor UUCP
- 算法导论第十二章
- 第十二章 PL/SQL应用程序性能调优
- 用未公开的MFC类加强动态内存分配
- 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条
- 第十二章:Swing编程
- 【转】第十二章 文件操作
- UNIX环境高级编程学习之第十二章线程控制-以分离状态创建线程
- C++ primer 3rd 第十二章泛型算法 P480 书中例子
- 算法导论 第十二章总结
- WCF 第十二章 对等网 使用PNRP解决对等网络问题
- WCF 第十二章 对等网 系列文章
- 第十二章 1 java输入流和输出流
- DBA2 第十二章:自动存储管理
- ocp 043 第十二章:自动存储管理