c++primer13.1.4小节答案

        本文通过文件读写来实现每生成一个对象给予一个唯一序号,可做到每次运行可执行文件生成的序号也互相不同。

numbered类:(拷贝赋值运算符与题目要求无关,不影响进程输出,used.txt初始为0)

class numbered
{
public:
    /*默认构造函数*/
    numbered()
    {
        MakeMysn();
    }
    /*拷贝构造函数*/
    numbered(const numbered &)
    {
        MakeMysn();
    }
    /*拷贝赋值运算符*/
    numbered & operator=(numbered & n)
    {
        MakeMysn();
        return n;
    }
    unsigned int mysn;

private:
    void MakeMysn()
    {
        ifstream ifs("../used.txt"); // 只读方式打开存入对象唯一序号的文件
        ifs >> mysn;                 // mysn保存序号
        ofstream ofs("../used.txt"); // 清零重写方式打开存入对象唯一序号的文件
        ofs << mysn + 1;             // 更新序号并写入存入对象唯一序号的文件
    }
};

13.14输出结果:

ldl@ldl-virtual-machine:~/CppPrimer/bin$ ./main 
0
0
0

分析:numbered a, b = a, c =a:中只a调用默认构造函数1次,中定义时用 = 调用合成拷贝构造函数mysn为赋予唯一标号。mysn更新为1。

        f(a); f(b);f(c):非引用传参,发生拷贝,调用合成拷贝构造函数,mysn不更新。

 

13.15输出结果:

ldl@ldl-virtual-machine:~/CppPrimer/bin$ ./main 
4
5
6

分析:numbered a, b = a, c = b:中定义时用 = 调用默认构造函数1次,拷贝构造函数两次mysn,mysn更新为4;

        f(a); f(b);f(c):非引用传参,发生拷贝,调用拷贝构造函数,打印的是拷贝副本numbered的为一标号,mysn更新为7。

ldl@ldl-virtual-machine:~/CppPrimer/bin$ ./main 
7
8
9

分析:numbered a, b = a, c = b:同上mysn更新为10; 

        f(a); f(b);f(c);引用传参,不发生拷贝,打印的是abc定义初始化时各自更新的值,mysn不更新。

 

相关推荐

  1. c++primer13.1.4小节答案

    2024-04-26 05:26:01       12 阅读
  2. 1314. 仰卧起坐成绩统计

    2024-04-26 05:26:01       33 阅读
  3. 1394 笔记

    2024-04-26 05:26:01       10 阅读
  4. 前端面试小节

    2024-04-26 05:26:01       18 阅读
  5. 134. 加油站

    2024-04-26 05:26:01       12 阅读
  6. 134. 加油站

    2024-04-26 05:26:01       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-26 05:26:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-26 05:26:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-26 05:26:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-26 05:26:01       20 阅读

热门阅读

  1. DevOps的出现带来的变化

    2024-04-26 05:26:01       13 阅读
  2. 材质系统(1):起源与概念

    2024-04-26 05:26:01       12 阅读
  3. Go语言如何处理含中文的字符串

    2024-04-26 05:26:01       11 阅读
  4. QT设置QTextEdit的文本颜色无效

    2024-04-26 05:26:01       10 阅读
  5. vue2 结合 elementui 实现图片裁剪上传

    2024-04-26 05:26:01       9 阅读
  6. 悲观锁与乐观锁介绍,优缺点

    2024-04-26 05:26:01       12 阅读
  7. Html&Css 基础总结(基础好了才是最能打的)一

    2024-04-26 05:26:01       13 阅读
  8. BERT tokenizer 增加全角标点符号

    2024-04-26 05:26:01       10 阅读