C++类继承--基类new和用派生类new的区别
实际上无论是用基类还是派生类New, 结果是一样的:
#include <stdio.h> class Base
{
public:
int a;
Base(){
a=0;
}
virtual ~Base(){
printf("base delete");
}
virtual void setA()=0; }; class A:public Base
{
public:
A(){
a = 10;
}
~A(){
printf("A class delete\n");
}
virtual void setA()
{
a = 2;
}
}; class B:public Base
{
public:
B(){
a=20;
}
~B(){
a=-20;
} virtual void setA()
{
a = 3;
}
}; int main()
{ Base *x = new A();
printf("BASE: a value of a construct %d\n", x->a);
x->setA();
printf("BASE: a value of a %d\n", x->a); x = new B();
printf("BASE: b value of b construct %d\n", x->a);
x->setA();
printf("BASE: B value of b %d\n", x->a); A *aClass = new A();
printf("a value of a construct %d\n", aClass->a);
aClass->setA();
printf("a value of a %d\n", aClass->a); B *bClass = new B();
printf("b value of a construct %d\n", bClass->a);
bClass->setA();
printf("b value of a %d\n", bClass->a); delete aClass; return 0;
}
运行结果为:
C++类继承--基类new和用派生类new的区别的更多相关文章
- 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针
您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...
- objectARX 关于MFC类向导 无法向此非CCmdTarget派生类添加任何命令 的解决方式
objectARX 关于MFC类向导 无法向此非CCmdTarget派生类添加任何命令 的解决方式 图文By edata ,转载注明出处 http://www.cnblogs.com/edata 1 ...
- 关于Java抽象类,接口与实现接口及派生类继承基类
1. 抽象类 抽象类就是有一个或多个方法只被声明而未被实现. 抽象方法的声明以分号结束,并且用关键字abstract来说明它以标识它为抽象方法. 格式: public abstract class 类 ...
- C++类继承--基类析构函数加上Virtual
下面的内容要说明两个问题:1. 基类的析构函数为什么要加上Virtual--防止内存泄露 1. 基类虚构函数无virtual,派生类无法析构,会导致内存泄露 #include <stdio.h& ...
- 简单的java实验,涉及到 类继承以及接口问题,方法体的重写(区别于重载)
package test ; abstract class Animal { abstract void cry(); abstract String getAnimalName(); } class ...
- OOP1(定义基类和派生类)
面向对象程序设计基于三个基本概念:数据抽象,继承和动态绑定 数据抽象是一种依赖于接口和实现分离的编程技术.继承和动态绑定对程序的编号有两方面的影响:一是我们可以更容易地定义与其它类相似但不完全相同的类 ...
- C++基类、派生类、虚函数的几个知识点
1.尽管派生类中含有基类继承来的成员,但派生类初始化这部分变量需要调用基类的构造函数. class A { private: int x; virtual void f(){cout<<& ...
- 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成员)
[源码下载] 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成 ...
- 从零开始学C++之继承(二):继承与构造函数、派生类到基类的转换
一.不能自动继承的成员函数 构造函数 析构函数 =运算符 二.继承与构造函数 基类的构造函数不被继承,派生类中需要声明自己的构造函数. 声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类 ...
随机推荐
- Nginx反向代理与负载简单实现
反向代理 1.proxy_pass 通过反向代理把请求转发到百度 2.proxy_pass 既可以是ip地址,也可以是域名,同时还可以指定端口 3.proxy_pass 指定的地址携带了URI,如果前 ...
- JS之判断json对象中是否含有某个key值
var json = {"key1":"val1","key2":"val2","key3":&qu ...
- list排序问题
用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: /*** 根据order对User排序*/public class User ...
- 关于 IsLocalUrl 方法的注意事项
用于判断是否为本地url的方法 Url.IsLocalUrl() 的注意事项: 此方法是以判断传入的url字符串的开头是否为 "/" 为依据来判断是否为本地url,所以如果传入的u ...
- Oracle分析函数、窗口函数简单记录汇总
一.分析函数.窗口函数一般形式 1.分析函数的形式分析函数带有一个开窗函数over(),包含三个分析子句:分组(partition by), 排序(order by), 窗口(rows) ,他们的使用 ...
- UML-6.2-用例-用例模型/用例/场景关系
参与者:具有某些行为的人或事物.如上一章中的收银员. |_主要参与者:收银员. |_协助参与者:程序(自动付费.帮收银员验证输入要素) |_幕后参与者:政府等(电子签章取证找公证机构) 用例:一组相关 ...
- oracle使用已有vid快速新建虚拟机
有时候需新建虚拟机,但是每一次新建都花费很多时间,这里在oracle中快速新建虚拟机,只需要复制已有的vdi,然后修改uuid即可 windows下在cmd下输入命令 cd C:\Program ...
- c++第二次作业
1.函数重载编程练习编写重载函数add(),实现对int型,double型,Complex型数据的加法.在main()函数中定义不同类型数据,调用测试. #include<iostream> ...
- lua table、ipairs/pairs基础知识
1.什么是table? table是Lua最复杂最强大的数据结构,Lua本身并不是面向对象语言,但是对面向对象中毒比较深的程序员,可以借助table”完美”地模拟面向对象编程.最简单地,我们可以把ta ...
- Axure原型设计介绍
在第八周的课堂上,王文娟老师在校园系统上发布了对于自行选择的原型设计软件进行资料查找以及自学的任务.因为之前的课程学习需要,我们大概掌握了原型设计软件Axure的使用,下面是一些我们学习过程中的介绍 ...