首页 > 试题广场 >

有以下类定义 #include usin...

[不定项选择题]
有以下类定义
#include <iostream>
using namespace std;
class shape 
{public:  
        virtual int area()=0;
};  
class rectangle:public shape 
{public: 
        int a, b;  
        void setLength (int x, int y) {a=x;b=y;} 
        int area() {return a*b;} 
};
若有语句定义rectangle r; r.setLength(3,5); 则编译时无语法错误的语句是(      )
  • shape *s1=&r;
  • shape &s2=r;
  • shape s3=r;
  • shape s4[3];
所以D选项?
shape s4[3];
????
发表于 2020-12-28 18:06:38 回复(0)
抽象类不能实例化对象,但是可以定义指针和引用。
发表于 2020-11-17 09:16:55 回复(0)
抽象类无法实例化出对象
发表于 2019-02-16 20:54:02 回复(0)
但是当一个类中有一个或多个纯虚函数的时候,这个类就自动成为了抽象类,即不可以实例化
发表于 2020-09-18 16:50:03 回复(0)
麻辣鸽蛋,看错题目了

在给定的类定义中,rectangle类是shape类的派生类,并实现了纯虚函数area()。下面我们逐个分析选项来确定编译时是否有语法错误。

A.shape *s1 = &r;这是合法的,因为rectangle类是shape类的派生类,可以将指向基类对象的指针指向派生类对象。

B.shape &s2 = r;这也是合法的,因为引用变量s2也可以引用派生类对象。

C.shape s3 = r;这是不合法的,因为我们不能创建抽象基类的对象。shape是一个抽象类,它包含了纯虚函数area(),无法直接实例化。

D.shape s4[3];这是不合法的,因为我们同样无法创建抽象基类的数组对象。


发表于 2023-10-20 19:55:45 回复(0)
抽象类不能实例化对象,但是可以定义指针和引用
发表于 2020-12-03 08:29:47 回复(0)
D 抽象类不能实例化,但是可以定义成指针或者引用。
发表于 2023-03-16 18:40:02 回复(0)
抽象类不能实例化对象,但是可以定义指针和引用
编辑于 2024-03-08 11:57:22 回复(0)
如果shape不是抽象类  答案是什么呀
发表于 2020-12-29 19:37:02 回复(0)