模板类之(数组)
来源:互联网 发布:数据决策系统 编辑:程序博客网 时间:2024/06/06 23:50
一、数组类
//shuzu.h
二、应该要注意的几个问题:
1、为什么拷贝构造函数要这么复杂?为什么不是简单的赋值?
——这涉及到深拷贝和浅拷贝的问题。简单的对对象成员赋值只能实现浅拷贝,浅拷贝会造成内存访问的安全性问题(同一块内存被释放两次)
2、为什么有些函数返回值是对象的引用,改为返回对象值可以吗?
——如果一个函数的返回值是一个对象值,它被认为是一个常量,当然不能成为左值。如果返回引用,引用的实质就是变量(对象)的别名,通过变量(对象)的别名当然可以改变变量(对象)的值。
eg:int a,b = 5;
(a=b)++;
这在C++中是允许的,运行后a的值是6,因此运算符“[ ]”和运算符“=”返回的都是引用类型。
另外,C++语法还规定,“=”,“[ ]”,“->”,“( )”都只能重载为成员函数,而且“=”运算符函数是不能被继承的。
所以重载运算符[]和运算符=都返回引用。
3、重载指针运算有必要吗?
看一个程序:
这里函数read的第一个形参是int *类型,而数组名a也是一个int型的指针常量,类型恰好是匹配的。但是如果希望像使用普通数组一样使用Array类的对象,将上述main函数改为如下:
这里形参和实参不同,编译系统会尝试进行自动类型转化,将类对象名a转换成形参的int*。由于a是自定义的对象,因此无法实现这一转换,因此需要我们自行编写重载的指针类型转换函数。
4、为什么转换指针函数体内有return语句,但是函数却没有返回值,连void都没有?
——这是C++语法规定:重载类型转换运算符时,不允许指定返回值类型(也不要写void)
三、应用上面的Array类:
求范围在2~n之间的质数,n在程序运行时由键盘输入
- 模板类之(数组)
- 模板之类模板(数组类模板)
- 数据结构之 栈stack 模板类(数组描述方法)
- 模板之---类模板
- 从零开始学C++之模板(二):类模板、Stack的类模板实现(自定义链栈方式,自定义数组方式)
- 从零开始学C++之模板(二):类模板、Stack的类模板实现(自定义链栈方式,自定义数组方式)
- 数据结构之动态数组 (C++类模板实现)
- 数据结构之顺序栈(数组)C++(模板)
- 数据结构实现(动态数组类模板)
- day_13_类模板(参数、数组、特化)
- Array数组类模板
- C++模板数组类
- 数组类模板
- 数组类模板
- 模板、数组类
- C++ 数组类模板
- C++数组类模板
- 数组类模板
- substitutes of cscope
- Asp.net 中session存储的三种模式的具体运用(转)
- 关于项目中使用HTML模板与XML模板的比较
- Session持久化比较(转)
- 缓冲区溢出编程心得 转http://fanqiang.chinaunix.net/program/netpro/2006-07-07/4785.shtml
- 模板类之(数组)
- 关于使用gdbserver和eclipse共同调试一个嵌入式程序的方法大纲
- maven项目如何执行main方法
- 【转】MFC绘图(详细)
- Win7系统下VS2005_2008不识别WinCE5 SDK
- update方法返回值的作用
- java 下连接数据库的万能类
- 交换机的端口安全
- java 下连接数据库的万能类