练习7.31:
满足题意的程序如下所示:

class X;//声明类型X
class Y//定义类型Y
{X* x;
};
class X//定义类型X
{Y y;
};

类X的声明称为前向声明,它向程序中引入了名字X并且指明X是一种类类型。对于类型X来说,此时我们已知它是一个类类型,但是不清楚它到底包含哪些成员,所以它是一个不完全类型。我们可以定义指向不完全类型的指针引用,但是无法创建不完全类型的对象。
如果试图写成下面的形式,将引发编译器错误。

class Y;
class X
{Y y;
};
class Y
{X*x;
};

此时我们试图在类X中创建不完全类型Y的对象,编译器给出报错信息:

《C++ Primer》7.3.3节练习相关推荐

  1. C++primer 9.2.1节练习

    练习9.3 迭代器begin和end必须指向相同的容器,end可以与begin指向相同的位置,但不能指向begin之前的位置: 练习9.4 1 #include <iostream> 2 ...

  2. C++primer 10.2.1节练习

    练习10.3 1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include <s ...

  3. C++primer 13.1.6节练习

    练习13.18 1 #include <iostream> 2 #include <string> 3 #include <memory> 4 5 using na ...

  4. 《C++ Primer》10.1节练习

    练习10.1: #include <iostream> #include <vector> #include <algorithm> using namespace ...

  5. 《C++ Primer》14.4节练习(部分)

    练习14.20: class Sales_data {friend Sales_data operator+(const Sales_data &lhs,const Sales_data &a ...

  6. 《C++ Primer》14.3节练习

    练习14.13: 对于Sales_data类,其实我们并不需要再为它添加其他算术运算符.但是这里我们可以考虑为它实现一个减法运算符. class Sales_data {friend Sales_da ...

  7. 《C++ Primer》14.1节练习

    练习14.1: 不同点: 重载操作符必须具有至少一个class或枚举类型的操作数. 重载操作符不保证操作数的求值顺序,例如对&&和||的重载版本不再具有"短路求值" ...

  8. 《C++ Primer》7.4节练习

    练习7.33: 题目代码: pos Screen::size()const {return height*width; } 如果添加如题目所示的size函数将会出现编译错误.因为该函数的返回类型pos ...

  9. 《C++ Primer》7.2节练习

    练习7.16: 在类的定义中,可以包含0个或者多个访问说明符,并且对于某个访问说明符能出现多少次以及能出现在哪里都没有严格规定.每个访问说明符指定接下来的成员的访问级别,有效范围直到出现下一个访问说明 ...

  10. 《C++ Primer》1.51节练习

    练习1.20 #include <iostream> #include "Sales_item.h" using namespace std;int main() {S ...

最新文章

  1. cv_bridge中的编码模式与实现
  2. 练习题 James and Dominoes
  3. Android中怎样使用createTempFile实现将字节数据创建到临时文件并转换成FileOutputStream和FileInputStream
  4. Eclipse使用mybatis generator自动生成代码
  5. 在 windows 下使用 Xming+Putty 显示 Linux 下软件图形界面
  6. python应声虫代码_前端大牛们都学过哪些东西?
  7. 阿里云自研数据仓库 AnalyticDB 再捧 TPC 全球冠军
  8. 计算机二级c语言程序设计答题流程,计算机二级C语言上机考试操作步骤及流程.doc...
  9. Android 分贝测试仪功能,Android最新大厂面试真题总结
  10. C++ 按值传递的切割问题(Slicing Problem)
  11. hdu 3689 Infinite monkey theorem (KMP+DP)
  12. 索引及其背后的数据结构(顺带介绍了一下子查询和合并查询)
  13. 阿里云服务器中安装配置MYSQL数据库完整教程
  14. Java生成与解析二维码
  15. C语言 自定义类型 之 【枚举】
  16. Linux学习笔记(管道)
  17. 从零开始之驱动发开、linux驱动(二十三、platform总线之数据驱动分离)
  18. 使用SpringBoot及Construct2的WebSocket制作联机游戏(二)
  19. Cell子刊:噬菌体对肠道菌群和代谢组的调控
  20. 【学习总结】MFC(CImagelist)(重绘)(双缓冲)

热门文章

  1. 【ArcGIS风暴】Win10操作系统ArcGIS许可License无法启动的解决方法汇总(绝对成功!)
  2. 【空间数据库】ArcSDE 10.7+SQLEXPRESS+ArcServer 10.7.ecp企业级数据库环境搭建
  3. ArcGIS中数据存放相对路径和绝对路径的区别
  4. Android之category
  5. ftp服务器客户端修改密码,如何在客户端修改FTP密码
  6. python listbox排序_python – 从tkinter.Listbox中提取项目列表
  7. 通过这个方法竟然可以看到声音传播的速度!?
  8. 快别发语音了! | 今日最佳
  9. 人工智能路上,怎么能少了它!
  10. 如何轻松将上亿的数据玩弄于股掌之中?