C:使用计算参数调用基类构造函数

前端之家收集整理的这篇文章主要介绍了C:使用计算参数调用基类构造函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个简单的例子演示了调用基类构造函数的C语法 – 据我所知,它是一个C学习者:
  1. class BaseClass {
  2. protected:
  3. int i;
  4. public:
  5. BaseClass(int x) {
  6. i = x;
  7. }
  8. };
  9.  
  10. class DerivedClass: public BaseClass {
  11. int j;
  12. public:
  13. DerivedClass(int x,int y): BaseClass(y) {
  14. j = x;
  15. }

这里,基类构造函数可以将派生类构造函数的命名参数作为输入.

现在,如果我想使用不是DerivedClass()的直接输入的输入值调用BaseClass()构造函数,该怎么办?基本上,我想在DerivedClass()中使用x和y做一些多线工作,然后将计算值传递给BaseClass().这可以用构造函数完成吗?这应该用某种初始化方法来完成吗?

解决方法

你可以这样做,是的:
  1. class BaseClass
  2. {
  3. public:
  4. BaseClass(int x) : i(x) {}
  5.  
  6. private:
  7. int i;
  8. };
  9.  
  10. class DerivedClass: public BaseClass
  11. {
  12. public:
  13. DerivedClass(int x,int y):
  14. BaseClass(compute(x,y)),// Neither i or j are initialized here yet
  15. j(x)
  16. {}
  17.  
  18. private:
  19. static int compute(int a,int b) { return a + b; } // Or whatever
  20. int j;
  21. };

请注意,您甚至可以将compute()作为非静态方法,但请注意,在调用时不会初始化DerivedClass或BaseClass成员.所以你将无法依赖他们的价值观.

猜你在找的C&C++相关文章