类的继承、拷贝构造函数
来源:互联网 发布:ec软件下载 编辑:程序博客网 时间:2024/05/22 03:37
C++学习笔记之三
上一节讲到了继承的基本用法,这一节主要讲述继承的基本用法以及拷贝构造函数。
1.继承
class Tutorial{
};
class vedioTutorial:public Tutorial{
};
注:继承时,私有成员(private)不能被调用。protected成员不能够被外部访问,但是能够被子类继承。
1)虚拟继承(起源:父指针指向子对象与函数重写)
在子类中对父类函数进行重写。若需在父类基础上,再添加功能,则先调用显示什么呢?
Tree *p=new AppleTree();
由于父类的一部分在指针(子类中)。在此基础上重写的话,调用的函数是父类的函数。
virtual关键字的用法(虚函数),解决重写问题。
在要重写的函数前,加virtual关键字在父类的函数前。
注:(1)只需要在父类中重写virtual,子类就自动重写virtual.
(2)即将重写的加virtual。
2)再谈构造与析构
创建子类对象时,父类的构造、析构都自动调用;调用顺序:先调用父类构造,再调用子类构造。
当父类有多个构造函数,可以显示调用;则调用默认。
child():parent(1,1){
}
当一个类被继承时,需将其析构函数声明为Virtual型。
Parent *p=new Child();
delete p;想调用子类析构,其实调用的是父类的析构,所以将父类析构加virtual。
主要问题:资源未被释放或崩溃。
3)多重函数
class Child:public father,public mother{
}//继承所有的public,protected属性。
4)纯虚函数与抽象类
纯虚函数的语法:(1)声明为virtual,(2)后面加0,(3)没函数体。
含纯虚函数的类为抽象类。抽象类不能被初始化。充当于“接口规范”。
具体实现(类的继承中写代码):子类对接口进行重写。
工程问题:
(1)抽象类没有具体的实现(2)常用于多重继承,实现了多套接口规范,又继承于原有父类。
(3)抽象类的析构函数应该被设置成virtual,因为它是用于多重继承的。
2.拷贝构造函数初讲
定义:以一个对象为蓝本来构造另一个构造函数
Object b;
Object a(b);//或object a=b;
拷贝构造函数不显示调用,并且只有三种情况:
(1)同上
(2)动态创建:Object *p=new Object(a);
(3)函数的传值调用:void test(Object a);//会自动调用拷贝构造函数。
这一节讲到这里,下一节继续讲解。
0 0
- 类的继承、拷贝构造函数
- C++构造函数 & 拷贝构造函数 & 派生类的构造函数 & 虚继承的构造函数
- C++构造函数 & 拷贝构造函数 & 派生类的构造函数 & 虚继承的构造函数
- C++构造函数 & 拷贝构造函数 & 派生类的构造函数 & 虚继承的构造函数
- 非构造函数的继承 深拷贝
- C++拷贝构造函数的继承
- 单类及继承类的构造函数、赋值函数、拷贝构造函数等测试
- c++ 拷贝构造函数 继承
- 类的构造函数、拷贝构造函数
- C++ 继承 构造函数、拷贝构造函数
- 【足迹C++primer】54、继承类的范围,构造函数和拷贝控制
- 类的拷贝构造函数、赋值函数
- 构造函数的拷贝
- 类的构造、析构、赋值构造、拷贝构造函数
- 继承中多态和拷贝构造函数
- 继承中多态和拷贝构造函数
- 类的拷贝构造函数的参数
- Js中非构造函数的继承(深拷贝浅拷贝)
- 使用Intent 传递对象
- 重新开始,期待涅槃重生
- 关于cocoa pods安装的那些事
- HTTP长连接与短连接
- 坏盘导致Kafka故障一例
- 类的继承、拷贝构造函数
- 编程之美之数组分割
- C - 字符串统计 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
- 易语言学习第十二课
- SharedPreferences的使用
- Activity的生命周期
- [leetcode] Longest Substring Without Repeating Characters
- #leetcode#83 Remove Duplicates from Sorted List
- Camtasia Studio实现画中画视频课件制作方案