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 ;
}

最新文章

  1. ASP.NET Core 中文文档 第三章 原理(11)在多个环境中工作
  2. SQL 归来
  3. ios 下创建,删除文件夹的方法
  4. JS 基础 入门
  5. iTunesConnect进行App转移
  6. Oracle User Calls 和 Executions 两个概念的区别
  7. 输入DStream和Receiver详解
  8. (转)javaScript插件开发
  9. python学习2——数据类型
  10. HW3.23
  11. 【java】Windows7 下设置环境变量
  12. I - u Calculate e
  13. 【ZOJ】3785 What day is that day? ——浅谈KMP在ACM竞赛中的暴力打表找规律中的应用
  14. Selenium测试专项三班隆重开班
  15. 学问Chat UI(4)
  16. 如何用java发送Http的post请求,并传递参数
  17. HDU 6373(斜面上小球弹跳 运动分解)
  18. Android使用ksoap2调用C#中的webservice实现图像上传
  19. 通过kubernetes构建ela服务
  20. java.lang.NoSuchMethodError: org.springframework.web.context.ConfigurableWebApplicationContext.getEnvironment()Lorg/springframework/core/env/ConfigurableEnvironment;问题

热门文章

  1. iOS: 学习笔记, 动态添加按钮
  2. sourceInsight的技巧
  3. Swift(一,创建对象,类型推导,基本运算,逻辑,字符串,数组,字典)
  4. Hive的MoveTask错误
  5. JS匿名执行函数
  6. 通过使用CyclicBarrier来计算Matrix中最大的值
  7. 利用ROWID 快速更新单表记录
  8. GPL,LGPL和BSD等协议注意事项
  9. poj3580
  10. 【转】android官方侧滑菜单DrawerLayout详解