[瞎JB写] C++多态
似乎只能通过引用或者指针进行动态多态。。。蛋疼的语法
#include <iostream>
#include <vector>
#include <memory>
using namespace std; class A {
public:
virtual void init() = ;
}; class B : public A {
public:
void init() {
cout << "B init" << endl;
}
}; class C :public B {
public:
void print() {
cout << "C -> B" << endl;
}
void init() {
cout << "C init" << endl;
}
}; class D : public A {
private:
int wow;
public:
D() { wow = ; }
D(int a) :wow(a) {}
void init() {
cout << "D init" << endl;
}
void print() {
cout << "D -> A" << wow << endl;
}
}; int main() {
vector<shared_ptr<A>> list;
list.push_back(make_shared<C>());
list.push_back(make_shared<D>());
for (auto &item : list) {
item->init();
}
((D*)list[].get())->print();
return ;
}
这样就可以实现所有物体放在一个容器里。。。
但是缺点也是显而易见的,如果强制转换到了错误的类,后面使用的时候就会出问题。
所以不能这么粗暴的转换,有一表达式可以帮助我们:
dynamic_cast
#define PTR_CONVERT(shared_ptr, type) (dynamic_cast<type*>(shared_ptr.get()))
PTR_CONVERT(list[0], C)->print();
PTR_CONVERT(list[1], D)->print();
[瞎JB写] C++多态的更多相关文章
- Tensorflow官方文档中文版——第二章(瞎奖杯写)
包含如下几个部分: 1.面向机器学习初学者的 MNIST 初级教程 2.面向机器学习专家的 MNIST 高级教程 3.TensorFlow 使用指南 4.卷积神经网络 5.单词的向量表示(word e ...
- 洛谷P2173 [ZJOI2012]网络(10棵lct与瞎jb暴力)
有一个无向图G,每个点有个权值,每条边有一个颜色.这个无向图满足以下两个条件: 对于任意节点连出去的边中,相同颜色的边不超过两条. 图中不存在同色的环,同色的环指相同颜色的边构成的环. 在这个图上,你 ...
- 瞎JB逆
P为质 ; long long quickpow(long long a, long long b) { ) ; ; a %= mod; while(b) { ) ret = (ret * a) % ...
- [bzoj1707]tanning分配防晒霜_贪心+排序
tanning分配防晒霜 bzoj-1707 题目大意:给出每个点所能接受的区间,给出m个可以使单个点固定在一个值的方法,每种方法能使用有限次. 注释:1<=N<=2500 想法:这题是瞎 ...
- C#设计模式整理
我居然连一月一随笔都没有,啊啊啊,忙死个人 这个随笔主要是记录基于自己学习[美]James W.Cooper著的<C# Design Patterns : A Tutorial>一书中常用 ...
- sdoi2018酱油鸡
ruand1滚粗啦,然后过来写游记 四月是你の省选... day -1 老师突然告诉我们说 day2 回来参加月考,心态爆炸. day0 坐车,颓,和队爷zpd补了b站翻唱2017top100,晚上收 ...
- CTSC2017游记&心得记
先来占个坑,骗点访问量 相册地址,戳这里 Day-1 一大清早就被叫了起来,赶去回车站....结果到了那里发现早了快1h?exm?是谁一早清早扰人清梦QAQ 杭州东转车,看到5号检票口被乘警团团围了起 ...
- C/C++ 宏操作小技巧
Abstract 之前写了一个非常mini的log库(也不算库把,自己瞎jb写的),里面几乎都是宏的实现.这里打算趁热打铁,把自己知道的几下子都贴出来,后续如果有新的收获会更新这个博文. 文笔拙劣,主 ...
- 安卓开发(3)—1— Activity
安卓开发(3)-1- Activity 3.1 Activity是什么: 在前面安卓概述中有提到,Activity是Android开发中的四大组件,所有在app里可以看到的东西都是Activity里面 ...
随机推荐
- Mysql –>EF edmx(model first)–> Sql server table
一.mysql environment When we create an new database,first We need draw er diagram for somebody to sho ...
- Web Service学习小结(概念性回忆)-希望你们会喜欢
Web Service的出现带来了很多系统工程直接相互的调用.无疑让代码的隐藏得到了好的封装. Web Service 它的主要的组成要素: SOAP:(Simple Object Access P ...
- C程序(3)
- 一个小笔记(8):EN_2
Why is programming fun? What delights may its practitioner expect as his reward? First is the sheer ...
- RHEL7虚拟机实验快照
配置虚拟机连接网络 首先确保NetworkManager服务正常运行 [root@administrator ~]# systemctl status NetworkManager ● Network ...
- iScroll-js—“smooth scrolling for the web”
原文地址: http://bigdots.github.io/2015/12/15/iScroll-js%E2%80%94%E2%80%94smooth%20scrolling%20for%20the ...
- 2015年第4本(英文第3本):Godfather教父
2015年的第4本书,第3本英文书. 书名:Godfather ,中文书名<教父> 作者: Mario Puzo 单词数:17万 词汇量:1万 首万词不重复词数:2200(这个我不太相信) ...
- Android项目实战(十四):TextView显示html样式的文字
项目需求: TextView显示一段文字,格式为:(消息个数,不确定)条消息 这段文字中名字和数字的长度是不确定的,还要求名字和数字各自有各自的颜色. 一开始我想的是用(转) SpannableStr ...
- Android文件操作
将数据写入Internal Storage: String fileName = "myfile.txt"; String str="保存数据到内部存储"; t ...
- JSP--JavaBean
JSP 最强有力的一个方面就是能够使用 JavaBean 组件. 按照 Sun 公司的定义, JavaBean是一个可重复使用的软件组件.实际上 JavaBean 是一种 Java 类,通过封装属性和 ...