这个简单的例子演示了调用基类构造函数的C语法 – 据我所知,它是一个C学习者:
- class BaseClass {
- protected:
- int i;
- public:
- BaseClass(int x) {
- i = x;
- }
- };
- class DerivedClass: public BaseClass {
- int j;
- public:
- DerivedClass(int x,int y): BaseClass(y) {
- j = x;
- }
现在,如果我想使用不是DerivedClass()的直接输入的输入值调用BaseClass()构造函数,该怎么办?基本上,我想在DerivedClass()中使用x和y做一些多线工作,然后将计算值传递给BaseClass().这可以用构造函数完成吗?这应该用某种初始化方法来完成吗?
解决方法
你可以这样做,是的:
- class BaseClass
- {
- public:
- BaseClass(int x) : i(x) {}
- private:
- int i;
- };
- class DerivedClass: public BaseClass
- {
- public:
- DerivedClass(int x,int y):
- BaseClass(compute(x,y)),// Neither i or j are initialized here yet
- j(x)
- {}
- private:
- static int compute(int a,int b) { return a + b; } // Or whatever
- int j;
- };
请注意,您甚至可以将compute()作为非静态方法,但请注意,在调用时不会初始化DerivedClass或BaseClass成员.所以你将无法依赖他们的价值观.