抽象类不能定于对象,但可以用抽象的类定义指针!
来源:互联网 发布:中国8月进出口数据库 编辑:程序博客网 时间:2024/06/05 04:50
可以用一个抽象类定义一个指向该类的指针,但是不能定义或声明对象。
这个中原因就是,定义一个类的对象是,编译器在编译时需要了解类的所有信息以便准确的为要实例化的对象分配内存;由此可见,定义一个类对象是要生成一个类的实例的,而C++规定抽象类是不能实例化的,所以会报出如下错误:
error C2259: 'CBase' : cannot instantiate abstract class
> due to following members:
> 'int CBase::func(int)' : is abstract
public:
virtual int func(int param) = 0;
private:
};
public:
CTestA();
~CTestA();
virtual int func(int param);
private:
int m_value;
};
{
CBase cb0; //定义或声明一个对象,error
CBase *cb = new CTestA(); //定义一个指针,OK
}
但是定义一个指针就不同了,指针是什么?大家都知道,无论它指向的是内部类型还是自己定义的结构体类型还是类的类型变量,它只不过就是一个具有32BIT也就是4个字节内存的空间而已,不需要其他任何信息了,所以能成功定义一个抽象类的指针变量。
class CBase{
class CTestA:public CBase{
int _tmain(int argc, _TCHAR* argv[])
return 0;
0 0
- 抽象类不能定于对象,但可以用抽象的类定义指针!
- final 不能修饰抽象类 方法可以被重载 但不能被重写
- 不能创建抽象基类的对象
- 不能创建抽象基类的对象
- 没有躲过的坑--抽象类不能实例化对象(但是你明明定义的不是抽象类)
- 没有躲过的坑--抽象类不能实例化对象(但是你明明定义的不是抽象类)
- 类不能实例化对象?(定义的也不是抽象类)
- Java抽象类不可创建对象,但可以调用静态方法将建一个对象
- 抽象类可以没有抽象方法,不能被实例化
- Java接口和抽象类的区别?(抽象类中可以定义变量)
- Java接口和抽象类的区别?(抽象类中可以定义变量)
- Java接口和抽象类的区别?(抽象类中可以定义变量)
- 抽象类和接口作为形式参数 多态 抽象类和接口虽然都不能直接创建对象,但是可以通过多态进行对象的创建
- RUP定义的抽象类
- 定义抽象类的注意事项
- 接口、抽象类的定义
- Java抽象类不能创建对象
- 为什么InetAddress类不能new初始化但可以定义对象:The constructor InetAddress() is not visible
- torch入门笔记4:用torch实现MNIST手写数字识别
- leetCode练习(51)
- Spring in action--Part2-Spring On The Web
- 第7周项目5-排队看病模拟
- phpcms v9:序列号自增代码
- 抽象类不能定于对象,但可以用抽象的类定义指针!
- 第七周 项目二 建立链队算法库
- JVM相关知识点
- 《深入理解Java虚拟机》学习笔记
- 如何使用openssl生成RSA公钥和私钥对
- Codevs 1066 引水入城 2010年NOIP全国联赛提高组 BFS + 贪心
- 时间类型详解
- MFC--修改图标/开机动画/Combo控件
- iOS 多线程(二)NSThread