标签:
问题及代码:
/*Copyright (c)2016,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:main.cpp *作 者:贾庆严 *完成日期:2016年5月10日 *版 本 号:v1.0 *问题描述:阅读程序,写出程序的运行结果并理解,补充注释。 */ #include<iostream> #include<cstring> using namespace std; class A { private: char *a; public: A(char *aa) { a = new char[strlen(aa)+1];//(a)这样处理的意义在于:aa中最后一个字符是"/0"结尾,计算aa的长度的时候少一个长度,所以加1 strcpy(a, aa); //(b)数据成员a与形式参数aa的关系:内容相同。 } ~A() { delete []a; //(c)这样处理的意义在于:释放由new建立的对象和指针所指向的内存空间 } void output() { cout<<a<<endl; } }; int main(){ A a("good morning, code monkeys!"); a.output(); A b("good afternoon, codes!"); b.output(); return 0; }
1.如果去掉 注释(a)所在的那一行,会造成指针a没有指向的地址,就成了野指针。
2. 注释(a), aa中最后一个字符是"/0"结尾,计算aa的长度的时候少一个长度,所以加1
标签:
原文地址:http://blog.csdn.net/jiaqingyan1/article/details/51367054