第九周 项目一(1)(2)

/*Copyright (c)2016,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:main.cpp
*作    者:肖雪
*完成日期:2016年5月9日
*版 本 号: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



时间: 2024-08-03 14:43:52

第九周 项目一(1)(2)的相关文章

第九周 项目一

[项目1-复数类中的运算符重载(续)] 在复数类中的运算符重载基础上 (1)再定义一目运算符 -,-c相当于0-c. /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *dood luck *文件名称:d.cpp *作 者:张旺华 *完成日期:2015年4月29日 *版 本 号:v1.0 * */ #include<iostream> using namespace std; class Complex { public: C

第九周项目1-复数类中的运算符重载(续)

在复数类中的运算符重载基础上 (1)再定义一目运算符 -,-c相当于0-c. (2)定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然. /* * Copyright (c) 2015,烟台大学计算机学院 * All right reserved. * 作者:邵帅 * 文件:Demo.cpp * 完成时间:2015年05月14日 * 版本号:v1.0 */ #include <iostream> using

第九周项目2-Time类中的运算符重载(续)

在Time类中的运算符重载基础上 (1)定义对时间对象的自增和自减一目运算符 (2)定义Time类中的<<和>>运算符重载,实现时间的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然. /* * Copyright (c) 2015,烟台大学计算机学院 * All right reserved. * 作者:邵帅 * 文件:Demo.cpp * 完成时间:2015年05月14日 * 版本号:v1.0 */ #include <iostream> using n

第九周项目3-分数类中的运算符重载(续)

在分数类中的运算符重载基础上 (1)定义分数的一目运算+和-,分别代表分数取正和求反,将"按位取反运算符"~重载为分数的求倒数运算. (2)定义分数类中<<和>>运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然. /* * Copyright (c) 2015,烟台大学计算机学院 * All right reserved. * 作者:邵帅 * 文件:Demo.cpp * 完成时间:2015年05月14日 * 版本号:v1.0 *

第九周项目3-输出星号图

a: /* *Copyright (c) 2014,烟台大学计算机学院 *All gight reserved. *文件名称:temp.cpp *作者:邵帅 *完成时间:2014年10月22日 *版本号:v1.0 * *问题描述:有趣的*号图案 *输入描述:无 *程序输出:*号图案 */ #include<iostream> using namespace std; int main() { int i,j,m=12; for (i=1; i<7; i++,m=m-2,cout<&

第九周项目二-Time类中的运算符重载(续)

<span style="color: rgb(85, 85, 85); font-family: 'microsoft yahei'; font-size: 15px; line-height: 35px;">在Time类中的运算符重载基础上</span><br style="color: rgb(85, 85, 85); font-family: 'microsoft yahei'; font-size: 15px; line-height:

第九周项目4-我的向量类

建立一个向量类MyVector,声明如下,请完成类的定义. class MyVector //定义向量类 { public: MyVector(int m); //构造函数,共有m个元素的向量,元素值预置为0 MyVector(const MyVector &v); //复制构造函数 ~MyVector(); //析构函数:释放动态数组所占用的存储空间 friend istream &operator>>(istream &input, MyVector &d)

第九周项目5-方程也是类

设计一元一次方程类,求形如ax+b=0的方程的解. 例如:输入3x-8=0时,输出的方程的解为x=2.66667: 再如:输入5s+18=0时,输出的方程的解为s=-3.6: /* * Copyright (c) 2015,烟台大学计算机学院 * All right reserved. * 作者:赵嵩 * 文件:Demo.cpp * 完成时间:2015年05月17日 * 版本号:v1.0 */ #include <iostream> #include <cstring> using

第九周 项目二-我的数组类

/*Copyright (c)2016,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:main.cpp *作 者:肖雪 *完成日期:2016年5月9日 *版 本 号:v1.0 *问题描述:阅读程序,请完成成员函数的定义,因为存在指针型的数据成员,注意需要深复制的构造函数 */ #include<iostream> using namespace std; class MyArray { private: int *arrayAddr; //保存一个有le