小编Ash*_*rma的帖子

虚函数是在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万
查看次数

Java字符串池对象创建

我怀疑我的概念在字符串池中是否清晰.请研究以下一组代码,并检查我的答案在以下一组陈述后创建的对象数量是否正确: -

1)

String s1 = "abc";
String s2 = "def";
s2 + "xyz";
Run Code Online (Sandbox Code Playgroud)

2)

 String s1 = "abc";
 String s2 = "def";
 s2 = s2 + "xyz";
Run Code Online (Sandbox Code Playgroud)

3)

String s1 = "abc";
String s2 = "def";
String s3 = s2 + "xyz";
Run Code Online (Sandbox Code Playgroud)

4)

String s1 = "abc";
String s2 = "def";
s2 + "xyz";
String s3 = "defxyz";
Run Code Online (Sandbox Code Playgroud)

根据我所知的概念,在上面的4个案例中,在执行每组行之后将创建4个对象.

java string

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

标签 统计

c++ ×1

java ×1

polymorphism ×1

string ×1