我在我的代码中发布了一个问题,其唯一的#include指令如下:
#include <bits/stdc++.h>
Run Code Online (Sandbox Code Playgroud)
我的老师告诉我这样做,但在评论部分,我被告知我不应该这样做.
为什么?
c++ portability c++-faq turbo-c++ implementation-defined-behavior
我的一个朋友问我"如何在C++中实现运行时多态性?" 我回答"通过继承"
他说:"不,只能使用虚拟功能才能实现".
所以我给了他一个以下代码的例子: -
#include<iostream>
using namespace std;
class A
{
public:
int i;
A(){i=100;}
};
class B : public A
{
public:
int j;
B(){i = -1; j = 99;}
};
void func(A& myA)
{
cout<<myA.i << endl;
}
int main()
{
B b;
A* a = new B();
func(*a);
func(b);
delete a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这里,函数func()接受A的引用,但是我们传递B的对象,我们可以打印公共成员"i"的值.他说这是编译时多态.
我的问题是: -
1)运行时多态性是否仅通过虚函数实现?
2)上面的例子是运行时多态还是编译时间?
3)如果我有以下代码: -
void func2(A& myA)
{
cout << myA.i << endl;
// dynamic/static cast myA to myB …Run Code Online (Sandbox Code Playgroud) c++ ×2
c++-faq ×1
implementation-defined-behavior ×1
polymorphism ×1
portability ×1
turbo-c++ ×1