小编use*_*437的帖子

抽象类如何引用但不引用对象?

请注意,您不能构造抽象类的对象,但仍可以使用类型为抽象类的对象引用.当然,它引用的实际对象必须是具体子类的实例:

Account anAccount; // OK
anAccount = new Account(); // Error—Account is abstract
anAccount = new SavingsAccount(); // OK
anAccount = null; // OK
Run Code Online (Sandbox Code Playgroud)

不明白为什么你可以有一个抽象类的对象引用...

java polymorphism class abstract

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

递归反向字符串方法的参数过多错误

我正在尝试编写一个递归函数来打印字符串的反转,但是,编译器一直说它有太多的参数.这个递归程序有什么问题?

#include <iostream>
using namespace std;

void reverseDisplay (const string& s)
{

    int length=s.size()-1;
    if (length==0)
        return;

    reverseDisplay(s, length);
}

void reverseDisplay (const string& s, int n)
{
    if(n==1)
        cout <<s[n];

    else { 
        cout << s[n];
        reverseDisplay(s, n-1);
    }
}

int main()
{
    string s="12345";
    reverseDisplay(s);


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ recursion

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

为什么通过引用传递字符串并使其成为常量?

只是一个普遍的问题,一个函数的签名是:

void f( const string & s )...
Run Code Online (Sandbox Code Playgroud)

如果您实际上没有更改字符串(因为它是常量),为什么有必要通过引用传递它?

c++

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

这个用于计算^ n的算法如何被重写以在O(log n)时间内运行?

假设您要计算n.一个简单的算法将乘以a,n次,如下所示:

result = 1;
for(int i =1; i <= n; i++)
    result *= a; 
Run Code Online (Sandbox Code Playgroud)

该算法需要O(n)时间.不失一般性,假设n = 2 ^ k

您可以使用以下方案改进算法:

 result = a;
 for (int i = 1; i <= k; i++)
     result = result * result; 
Run Code Online (Sandbox Code Playgroud)

该算法需要O(log n)时间.对于任意n,您可以修改算法并证明复杂性仍为O(logn)

如此困惑,那么如何n = 2 k,为什么k只在第二个例子中显示?不明白这是如何转化为O(logn)时间复杂度的......

c++ algorithm math big-o time-complexity

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

创建简单的Student类

我正在使用java创建一个类,它是理解对象,方法等的基本类.无论如何,类名是Student,它应该为每个新创建的对象分配一个学生ID.学生ID从1000000开始并递增1,因此每个新对象都应该让班级分配学生ID,10000001,100000002等.

public class Student {

 private static long nextID=10000000;
 private long studentID;
 //etc..

 public Student (String name, long studentID, int count, double total score) {
        totalScore=0;
        count=0;
        this.name=name;
        studentID=nextID;
        nextID++;

 }

 public long getStudentID() {
       return nextID;`
 }
Run Code Online (Sandbox Code Playgroud)

但是,当我创建此课程的对象时,学生ID会不断给每个人提供相同的学生编号,10000000.请帮忙

java oop variables class

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

抽象类和非抽象超类

如果你有一个名为Car的抽象超类,并且它有各种子类,并且没有实现的抽象方法,为什么还要使用抽象类引用变量.即

Car myCar=new Honda(); 
Run Code Online (Sandbox Code Playgroud)

在Car类中,只有抽象方法没有实现,所以没有用是没有用的?

java inheritance

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