gpt4 book ai didi

c++ - 从父类(super class)访问子类?

转载 作者:太空狗 更新时间:2023-10-29 21:00:23 24 4
gpt4 key购买 nike

我想知道我的父类(super class)是否可以为子类调用函数 initValues() 而不必重写构造函数?

代码如下:

#ifndef VECTOR_MATH_H
#define VECTOR_MATH_H

#include "GL\glew.h"

#include <iostream>

namespace Math3d
{

class Vector
{
public:
Vector(int length=2) : v(new float[length]) { initValues(); }
~Vector() { delete[] v; }
protected:
virtual void initValues()
{
std::cout << "Vector" << std::endl;
}
float* v;
};

class Vector3 : public Vector
{
public:
protected:
void initValues()
{
std::cout << "Vector3" << std::endl;
}
};

}

#endif

然后我创建一个这样的变量: Vector3 vec;

然后我想 初始值()子类的方法,要调用的 Vector3。

这可能吗?

最佳答案

简短的回答:不,你不能。

长答案:在派生类构造函数被调用之前,对象的虚拟表不会被充实。在基类构造函数中,虚表指向函数的基类实现。如果基类有一个实现,该函数将被调用。如果基类没有实现,将发生平台相关的错误/异常。

关于c++ - 从父类(super class)访问子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22206556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com