《深度探索C++对象模型》第五章,一段有关拷贝语义学的文字没看懂,请教各位大虾

celeil celeil 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
《深度探索C++对象模型》P223页有这么一段:
  编译器如何能够在Point3d和Vertex的copy assignment operators中压抑Point的copy assignment operators呢?编译器不能够重复传统的consructor解决方案(附上额外的参数)。这是因为,和constructor以及destructor不同的是,“取copy assignment operator地址”的操作是合法的。

背景说明,这里有个假设,有类Point3d和Vertex,都是虚拟继承自类Point。而类Vertex3d则同时继承自Point3d和Vertex。那么显然在Point3d和Vertex的copy assignment operator里都有调用Point的copy assignment operator这个动作,那么在Vertex3d里则会重复把这个动作做3次。为了不这样,编译器必须压抑在Vertex3d里的Point3d和Vertex的constructor不这么做。

我的问题:
  我的第一个问题是,这段话里的“传统的constructor解决方案(附上额外的参数)”是什么?我记得这本书里有讲,但不记得在何处了,请知道的朋友告诉俺。
  我的第二个问题是,下一句,“取copy assignment operator地址”的操作是合法的,这句话何解?在书中接着举了个例子,用一个函数指针调用Point3d的copy assignment operator,是不是怕程序员进行这种调用,从而会破坏在Vertex3d中对Point3d的copy assignment operator的压抑动作?
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
celeil
C++ 语言 65,214 成员 250,514 内容