相关疑难解决方法(0)

我为什么不#include <bits/stdc ++.h>?

我在我的代码中发布了一个问题,其唯一的#include指令如下:

#include <bits/stdc++.h>
Run Code Online (Sandbox Code Playgroud)

我的老师告诉我这样做,但在评论部分,我被告知我不应该这样做.

为什么?

c++ portability c++-faq turbo-c++ implementation-defined-behavior

215
推荐指数
6
解决办法
2万
查看次数

虚函数是在C++中实现运行时多态的唯一方法吗?

我的一个朋友问我"如何在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++ polymorphism

9
推荐指数
2
解决办法
2万
查看次数