1)众所周知,抽象类是不存在对象的,只提供接口而不提供实现。但是抽象类能不能作为一个类指针,指向其子类的对象呢?

class Interface {
public:
virtual void fun() = ;
}; class Implement: public Interface {
public:
void fun() {
cout<<"This is Implement object."<<endl;
}
}; int _tmain(int argc, _TCHAR* argv[])
{
Interface *obj = new Implement();
obj->fun();
return ;
}

  结论:能。抽象类不能拥有自己的类对象,但是,可以定义抽象类指针指向其子类的对象。

2)指向指针的指针  两种最常见的情形:(数组的名字会退化成其首元素的指针。

2.1 指针数组:

class Shape {
public:
void testFunc() {
cout<<"Shape::testFunc()"<<endl;
}
//...
}; Shape *picture[]; int _tmain(int argc, _TCHAR* argv[])
{
Shape **temp = picture;
Shape *p = *temp;
p->testFunc();
return ;
}

2.2

void scanTo(const char **p, char ch) {
while (**p && **p != ch) {
++*p;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
char s[] = "hello, World";
const char *cp = s;
scanTo(&cp, ',');//将指针cp移动第一个“,”出现的位置
cout<<*cp<<endl;
return ;
}

3)仿函数

//仿函数 加法
template <class T>
struct plus {
T operator() (const T& x, const T& y) const {
return x+y;
}
}; //仿函数 减法
template <class T>
struct minus {
T operator() (const T& x, const T& y) const {
return x-y;
}
}; int _tmain(int argc, _TCHAR* argv[])
{
//以下产生仿函数对象
plus<int> plusObj;
minus<int> minusObj;
//以下使用仿函数,就像使用一般函数一样
cout<<plusObj(,)<<endl;
cout<<minusObj(,)<<endl; //以下直接产生仿函数的临时对象(第一对小括号),并调用之(第二对小括号)
cout<<plus<int>()(,)<<endl;
cout<<minus<int>()(,)<<endl;
return ;
}

关于C++的疑问剖析的更多相关文章

  1. [Leveldb源码剖析疑问]-block_builder.cc之Add函数

    Add函数是给一个Data block中添加对应的key和value,函数源码如下,其中有一处不理解: L30~L34是更新last_key_的,不理解这里干嘛不直接last_key_ = key.T ...

  2. React源码剖析系列 - 生命周期的管理艺术

    目前,前端领域中 React 势头正盛,很少能够深入剖析内部实现机制和原理.本系列文章希望通过剖析 React 源码,理解其内部的实现原理,知其然更要知其所以然. 对于 React,其组件生命周期(C ...

  3. MapReduce剖析笔记之二:Job提交的过程

    上一节以WordCount分析了MapReduce的基本执行流程,但并没有从框架上进行分析,这一部分工作在后续慢慢补充.这一节,先剖析一下作业提交过程. 在分析之前,我们先进行一下粗略的思考,如果要我 ...

  4. 内存管理_深入剖析volatile关键字

    四.深入剖析volatile关键字 在前面讲述了很多东西,其实都是为讲述volatile关键字作铺垫,那么接下来我们就进入主题. 1.volatile关键字的两层语义 一旦一个共享变量(类的成员变量. ...

  5. 深入剖析Java中的装箱和拆箱

    深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱 ...

  6. 深入剖析 redis 主从复制

    主从概述 redis 支持 master-slave(主从)模式,redis server 可以设置为另一个 redis server 的主机(从机),从机定期从主机拿数据.特殊的,一个 从机同样可以 ...

  7. 深入剖析 redis AOF 持久化策略

    本篇主要讲的是 AOF 持久化,了解 AOF 的数据组织方式和运作机制.redis 主要在 aof.c 中实现 AOF 的操作. 数据结构 rio redis AOF 持久化同样借助了 struct ...

  8. Hadoop2.x源码-编译剖析

    1.概述 最近,有小伙伴涉及到源码编译.然而,在编译期间也是遇到各种坑,在求助于搜索引擎,技术博客,也是难以解决自身所遇到的问题.笔者在被询问多次的情况下,今天打算为大家来写一篇文章来剖析下编译的细节 ...

  9. Objective-C类成员变量深度剖析

    目录 Non Fragile ivars 为什么Non Fragile ivars很关键 如何寻址类成员变量 真正的“如何寻址类成员变量” Non Fragile ivars布局调整 为什么Objec ...

随机推荐

  1. smali 语法之try catch语句

    # virtual methods .method public onClick(Landroid/view/View;)V .locals 4 .parameter "v" .p ...

  2. Table view 备忘

    Table view 备忘 本篇会以备忘为主,主要是一些基础的代理方法和数据源方法具体的优化好点子会后续跟上. Table view的数据源方法 必须实现的数据源方法 // 返回每一行的cell,可以 ...

  3. 趣味C程序100.1 .1 绘制余弦曲线

    说明:1.本问题来源于<C语言经典.趣味.实用程序设计编程百例精解>,所有程序为本人自己编写.与原程序不同之处作有标记. 2.本系列所有程序均使用codeblocks编译,操作系统为Win ...

  4. SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆

    http://www.cnblogs.com/kissdodog/archive/2013/06/12/3132380.html

  5. log4j学习日记-写入数据库

    1.首先创建日志数据库 用的是MySQL CREATE TABLE `td_log` (   `lid` int(11) NOT NULL AUTO_INCREMENT,   `lusername` ...

  6. c3p0数据库连接池的使用

    一.c3p0与dbcp区别 dbcp没有自动回收空闲连接的功能 c3p0有自动回收空闲连接功能 <C3P0是Hibernate3.0默认的自带数据库连接池,DBCP是Apache开发的数据库连接 ...

  7. R语言 系统聚类分析1

    #聚类分析是一类将数据所研究对象进行分类的统计方法,这一类方法的共同特点是:#事先不知道类别的个数与结构 据以进行分类的数据是对象之间的相似性 或差异性数据#将这些相似(相异)性数据看成是对象之间的距 ...

  8. POJ1218

    Problem  C Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) Total Su ...

  9. C# 中的协变和逆变

    作为一个从接触 Unity 3D 才开始学习 C# 的人,我一直只了解一些最基本.最简单的语言特性.最近看了<C# in Depth>这本书,发现这里面东西还真不少,即使除去和 Windo ...

  10. 最全面的 DNS 原理入门

    DNS 是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识. 本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作.我的目标是,读完此文后,你就能完全理解DNS. 一.D ...