小编som*_*ock的帖子

如果我在明确的情况下使用指针,编译器可以内联虚函数吗?

我已经阅读过内联虚拟功能真的没有意义吗?.但我仍有一些疑虑,并没有找到答案.

他们说如果情况不明确,编译器应该内联虚函数.

然而:

只有当编译器具有实际对象而不是指针或对象的引用时,才会发生这种情况.

那么,如果我有一个B派生自一个类的类A(包含一个virtual void doSth()函数)并使用B*指针,而不是A*:

B* b = new B;

b->doSth();
Run Code Online (Sandbox Code Playgroud)
  1. 假设B没有任何子类.在编译时应该调用什么函数是相当明显的.所以可以内联.实际上是吗?
  2. 假设B有一些子类,但这些类没有自己的doSth()功能.所以编译器应该"知道"唯一要调用的函数B::doSth().我猜它虽然没有内联?

c++ compiler-construction virtual inline

10
推荐指数
1
解决办法
643
查看次数

delete []运算符的参数可以指向数组的非第一个元素吗?

问题如上; 例如,如果我有int* ptr = new int[10]一些数据操作ptr设置为,例如,第二,第五或最后一个元素,那么这个调用delete[] ptr是正确的吗?在手册中找不到它.

c++ delete-operator

1
推荐指数
1
解决办法
93
查看次数

"多重执行" - 如何处理?什么是这种东西的"名称"?

我的问题是关于编程技术,或者可能是设计模式.假设从base派生的几个类包含一个纯虚方法,它应该进行一些交互.

例如,Rectangle,Ellipse,TriangleLine-都来自衍生Shape.而这个抽象类Shape包含virtual bool Intersects(Shape* another) = 0.

看来,我需要做六个实现,对(顺便说一句,在这个特定的例子中是更好的解决方案吗?).

我目前不知道其他任何例子.

也许我在谈论一个众所周知的事情,我几乎肯定有一些名字描述了这项技术.但是,我甚至不知道输入什么来在互联网上找到它.

那么,你能告诉我如何实现这样的事情(我仍然想知道是否需要任何辅助方法,或者,也许,RTIIdynamic_cast吗?)或者指出一些关于它的来源(艺术,教程或其他)?

c++ oop implementation interaction

0
推荐指数
1
解决办法
1186
查看次数