【发布时间】:2015-04-12 22:18:41
【问题描述】:
我需要弄清楚,显式调用超类构造函数/方法的最佳方式。
我尝试了以下两种方式来调用超类构造函数:
Myclass::Myclass(int a, int b):X(a),Y(b)
{
// do something
}
和
Myclass::Myclass(int a, int b)
{
X = a;
Y = b;
}
所以我的问题是:
- 显式调用超类构造函数/方法的最佳方式是什么?
- 这两种方式都有哪些好处?
- 最佳做法是什么?为什么?
- 两种方式都有性能问题吗?
关于我的问题,我找到了这个链接: What are the rules for calling the superclass constructor? 但我仍然对我上面的问题有点怀疑。
如果有任何在线教程、博客或视频,你也可以在这里提及,这对我很有帮助。提前致谢.....
【问题讨论】:
-
第二个没有做你认为的那样。 (如果
X和Y都没有默认构造函数,它甚至不应该编译)。编辑:现在它只会在 X 和 Y 是成员变量时编译。 -
你链接的问题在什么方面不清楚?
-
@WhozCraig 或者有一个非显式构造函数采用 int
-
是
X和Y应该是Myclass的两个直接基类? -
@MattMcNabb 如果它们是实例变量的名称,它将在 both 示例中编译。但是我们刚刚发现它们都是类型,所以第二种仍然是垃圾。 真实代码示例不是很方便吗?你可能来晚了。第二个构造函数的原始帖子看起来与 stensoft 的答案一样。它已经改变了。
标签: c++ constructor superclass