你能实例化一个 class 然后使用 new 给它分配一个不同的 class (例如 class1 name = new class2)
Can you instantiate a class and then assign a different class to it using new (e.g. class1 name = new class2)
我在教程的 2:48 中观看了有关 youtube 上“->”运算符的 c++ 教程(link)。他写了代码
int main()
{ScopedPtr entity = new Entity();}
根据我对实例化 class 的理解,new 关键字后面的 class 应该与您正在实例化的 class 相同。请解释这是如何工作的以及为什么会这样。
仅供参考:我是编码的初学者,我没有指南或任何我目前正在从名为 Cherno 的 youtube 频道学习 C++ 的东西,每当我不明白的东西我只是搜索互联网并进入网站
是的,当您创建指向 类 实现的指针时,可能会发生这种情况,其中 ScopedPtr
是指向 Entity
.
实现的指针
#include <iostream>
class Entity
{
public:
Entity(){}
//only for test
void print()
{
std::cout << " print";
}
};
class ScopedPtr
{
public:
ScopedPtr(Entity* d) { implem = d;}
~ScopedPtr(){ delete implem;}
//only for test
void print()
{
implem->print();
}
private:
Entity* implem;
};
int main()
{
ScopedPtr entity = new Entity();
entity.print();
}
我在教程的 2:48 中观看了有关 youtube 上“->”运算符的 c++ 教程(link)。他写了代码
int main()
{ScopedPtr entity = new Entity();}
根据我对实例化 class 的理解,new 关键字后面的 class 应该与您正在实例化的 class 相同。请解释这是如何工作的以及为什么会这样。
仅供参考:我是编码的初学者,我没有指南或任何我目前正在从名为 Cherno 的 youtube 频道学习 C++ 的东西,每当我不明白的东西我只是搜索互联网并进入网站
是的,当您创建指向 类 实现的指针时,可能会发生这种情况,其中 ScopedPtr
是指向 Entity
.
#include <iostream>
class Entity
{
public:
Entity(){}
//only for test
void print()
{
std::cout << " print";
}
};
class ScopedPtr
{
public:
ScopedPtr(Entity* d) { implem = d;}
~ScopedPtr(){ delete implem;}
//only for test
void print()
{
implem->print();
}
private:
Entity* implem;
};
int main()
{
ScopedPtr entity = new Entity();
entity.print();
}