c 抽象类的作用(抽象类可以作为函数的参数类型么)
本文目录
抽象类可以作为函数的参数类型么
抽象类 对象不可以,不过抽象类 指针和引用方式就可以,比如下面函数是合法的。void fun(CAbstract *p);void fun(CAbstract &a);非法的例子:void fun(CAbstract obj);指针和引用方式合法的原因,是因为指针和引用方式指向的对象可以是抽象类的派生类型的对象。而这些派生类可能不是抽象类。
一道C++问题 关于抽象类,下列表述正确的是( ) A 抽象类的成员函数中至少有一个是没有实现
包含纯虚函数的类称为抽象类。由于抽象类包含了没有定义的纯虚函数,所以不能定义抽象类的对象。抽象类是一种特殊的类,它是为了抽象和设计的目的而建立的,它处于继承层次结构的较上层。抽象类是不能定义对象的,在实际中为了强调一个类是抽象类,可将该类的构造函数说明为保护的访问控制权限。抽象类的主要作用是将有关的类组织在一个继承层次结构中,由它来为它们提供一个公共的根,相关的子类是从这个根派生出来的。抽象类刻画了一组子类的操作接口的通用语义,这些语义也传给子类。一般而言,抽象类只描述这组子类共同的操作接口,而完整的实现留给子类。抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。如果派生类没有重新定义纯虚函数,而派生类只是继承基类的纯虚函数,则这个派生类仍然还是一个抽象类。如果派生类中给出了基类纯虚函数的实现,则该派生类就不再是抽象类,而是一个可以建立对象的具体类。
我想问各位大侠解释一下C语言中的抽象类型!
你说的是c++的抽象类纯虚函数和抽象类 纯虚函数是一种特殊的虚函数,它的一般格式如下: class 《类名》 { virtual 《类型》《函数名》(《参数表》)=0; … }; 在许多情况下,在基类中不能对虚函数给出有意义有实现,而把它说明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。下面给出一个纯虚函数的例子。 #include class point { public: point(int i=0, int j=0) { x0=i; y0=j; } virtual void set() = 0; virtual void draw() = 0; protected: int x0, y0; }; class line : public point { public: line(int i=0, int j=0, int m=0, int n=0):point(i, j) { x1=m; y1=n; } void set() { cout《《"line::set() called.\n"; } void draw() { cout《《"line::draw() called.\n"; } protected: int x1, y1; }; class ellipse : public point { public: ellipse(int i=0, int j=0, int p=0, int q=0):point(i, j) { x2=p; y2=q; } void set() { cout《《"ellipse::set() called.\n"; } void draw() { cout《《"ellipse::draw() called.\n"; } protected: int x2, y2; }; void drawobj(point *p) { p-》draw(); } void setobj(point *p) { p-》set(); } void main() { line *lineobj = new line; ellipse *elliobj = new ellipse; drawobj(lineobj); drawobj(elliobj); cout《 setobj(lineobj); setobj(elliobj); cout《《"\nRedraw the object...\n"; drawobj(lineobj); drawobj(elliobj); } 抽象类 带有纯虚函数的类称为抽象类。抽象类是一种特殊的类,它是为了抽象和设计的目的而建立的,它处于继承层次结构的较上层。抽象类是不能定义对象的,在实际中为了强调一个类是抽象类,可将该类的构造函数说明为保护的访问控制权限。 抽象类的主要作用是将有关的组织在一个继承层次结构中,由它来为它们提供一个公共的根,相关的子类是从这个根派生出来的。 抽象类刻画了一组子类的操作接口的通用语义,这些语义也传给子类。一般而言,抽象类只描述这组子类共同的操作接口,而完整的实现留给子类。 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。如果派生类没有重新定义纯虚函数,而派生类只是继承基类的纯虚函数,则这个派生类仍然还是一个抽象类。如果派生类中给出了基类纯虚函数的实现,则该派生类就不再是抽象类了,它是一个可以建立对象的具体类了。
c#中的抽象类是什么意思
不能实例化的类
看不见但存在。
抽象类用做基类不能被实例化用途是派生出其他非抽象类接口主要是实现多重继承abstract 修饰符用于表示所修饰的类是不完整的,并且它只能用作基类。抽象类与非抽象类在以下方面是不同的:• 抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类型派生的)。• 允许(但不要求)抽象类包含抽象成员。• 抽象类不能被密封。当从抽象类派生非抽象类时,这些非抽象类必须具体实现所继承的所有抽象成员,从而重写那些抽象成员。在下面的示例中abstract class A{public abstract void F();}abstract class B: A{public void G() {}}class C: B{public override void F() { // actual implementation of F}}抽象类 A 引入抽象方法 F。类 B 引入另一个方法 G,但由于它不提供 F 的实现,B 也必须声明为抽象类。类 C 重写 F,并提供一个具体实现。由于 C 没有抽象成员,因此 C 可以(但不要求)是非抽象的。