C++学习-对象数组
来源:互联网 发布:丰趣海淘 知乎 编辑:程序博客网 时间:2024/05/21 14:58
先上个代码
#include<iostream>#include<string>using namespace std;class Student{public:Student() :m_strName("Adison"), m_intnumber(20318){cout << "Student" << endl;}Student(const Student&stu) :m_strName("Alice"), m_intnumber(20301){setName();cout << "copy Student" << endl;}string printfName(){return m_strName;}int printfNum(){return m_intnumber;}void setName(){m_strName = "auto";}void setName2(string a){m_strName = a;}~Student(){cout << "~Student" << endl;}private:string m_strName;int m_intnumber;};void copy(Student a){}int main(){Student stu1;cout << stu1.printfName() << endl;Student *stu2 = new Student[3];cout << stu2[0].printfName() << endl;cout << stu2[1].printfName() << endl;cout << stu2[2].printfName() << endl;delete[]stu2;stu2 = NULL;system("pause");}
我觉得用栈来初始化对象数组是没有问题的,但是用堆就会有点问题。
我们经常是 Student*stu2=new Student[3]这样子,这个是没有问题的。
但是之后我就开始想使用指针的方法来调用每一个对象的成员函数
例如stu2[0]->printfName()这样子,但是我后来发现一个问题!
stu2[0]根本就,不是,一个指针啊!!!!!!
在这里,指针应该是stu2!
所以我们可以用stu2->printfName()这样子调用第一个对象的成员函数。
然后我们可以使用类似(stu2+1)->printfName()这样子调用第二个对象的成员函数
但是这里有另外一个问题
那就是,如果你使用了stu2++这一种方法。。。。。。
那么你stu2->printfName()这样子,就是访问第二个对象的成员函数了。
另外一个要注意的是
自增以后stu2++以后,stu2[0]现在这样子你访问的是第二个对象!而不是第一个对象了!
这是需要注意的!
我的代码好像三个对象的内容都一样的-3-。。。
另外啰嗦说一下。。。。大家如果想用堆的方法来创建一个东西,anyway,什么东西,都要遵循
判断申请是否成功
用完了之后delete
然后再把申请的指针指到NULL
这是一个好习惯啊~~~!!~!~!
阅读全文
0 0
- 【C++】学习笔记四十九——对象数组
- 对象数组【c++】
- 3.5对象数组【C++】
- C++学习-对象数组
- Objective-C之数组对象
- C++-类对象成员&&对象数组
- C++---对象数组和对象指针
- [C学习]数组
- [C学习]数组
- [C学习]数组
- objective-c 学习 数组
- C语言数组学习
- C语言学习-数组
- C语言数组学习
- c/c++学习--------->数组
- js数组对象的学习
- C++学习笔记 数组对象
- js数组对象的学习
- OKHttp基本的网络请求
- 判断字符是否为中文
- 编译ardublockly的步骤
- 开发维护大型 Java 项目的建议
- 【CodeForces
- C++学习-对象数组
- 底部导航栏:类似微信风格的底部导航条(需要选中和不选中的两种图标)
- 拉格朗日插值算法简介及其C++实现
- ceph运维常用指令
- SqlServer2008安装过程详解~
- RPM打包技术与典型SPEC文件分析
- 关于百度echarts map地图的使用之分布图
- 关于做开源技术的一些思考
- 远程计算机或设备将不接受连接,IE无法上网