请注意,您不能构造抽象类的对象,但仍可以使用类型为抽象类的对象引用.当然,它引用的实际对象必须是具体子类的实例:
Account anAccount; // OK
anAccount = new Account(); // Error—Account is abstract
anAccount = new SavingsAccount(); // OK
anAccount = null; // OK
Run Code Online (Sandbox Code Playgroud)
不明白为什么你可以有一个抽象类的对象引用...
我正在尝试编写一个递归函数来打印字符串的反转,但是,编译器一直说它有太多的参数.这个递归程序有什么问题?
#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) 只是一个普遍的问题,一个函数的签名是:
void f( const string & s )...
Run Code Online (Sandbox Code Playgroud)
如果您实际上没有更改字符串(因为它是常量),为什么有必要通过引用传递它?
假设您要计算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)时间复杂度的......
我正在使用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.请帮忙
如果你有一个名为Car的抽象超类,并且它有各种子类,并且没有实现的抽象方法,为什么还要使用抽象类引用变量.即
Car myCar=new Honda();
Run Code Online (Sandbox Code Playgroud)
在Car类中,只有抽象方法没有实现,所以没有用是没有用的?