函数模板linux,函数模板 析构函数

场景:C++初始之命名空间,类,类的静态方法,函数模板,虚析构函数

C++初步之命名空间,类,类的静态方法,函数模板,虚析构函数

在学习C++的时候,开始使用using namespace std;

但是对于命名空间不是很了解.后来在学习C#的时候多了些了解.

但是对于程序包而言主要还是在Java中对于Java包的理解来理解的.

我自己写了个涉及题目上概念的一个简单的CPP程序.如下:

首先声明一点,我是在Ubuntu下用Eclipse的Linuxtool来开发的.

首先是头文件,

/*

* Util.h

*

* Created on: 2011-10-12

* Author: banxi1988

*/

#ifndef UTIL_H_

#define UTIL_H_

namespace banxi {

class Util {

public:

Util();

virtual ~Util();

template

static T max(T a,T b){

return a > b?a:b;

}

};

}//end of namespace of banxi

#endif /* UTIL_H_ */

然后是.cpp文件.

/*

* Util.cpp

*

* Created on: 2011-10-12

* Author: banxi1988

*/

#include "Util.h"

namespace banxi {

Util::Util() {

// TODO Auto-generated constructor stub

}

Util::~Util() {

// TODO Auto-generated destructor stub

}

}

然后是测试类:

#include

#include "Util.h"

using namespace banxi;

using namespace std;

int main() {

int a = 3,b = 4;

double c = 3.2,d = 4.3;

cout <

cout <

return 0;

}

/**

* 输出结果:

*

* compare3,4the max was:4

* compare3.2,4.3the max was:4.3

*/

一个注意到的问题:

为什么Eclipse生成的代码中,要把析构函数定义为虚析构函数.

virtual ~Util();

虚析构函数使用virtual说明,格式如下:

virtual ~();

虚析构函数的必要性.

delete运算符和析构函数一起工作,当使用delete删除一个对象时,delete隐含着对析构函数的一次调用.这个保证了使用基类类型的指针能够调用适当的析构函数针对不同的对象进行清除工作.

主要是为了在删除如 Base b = new Subclass;

delete b;

这个时候删除b,如果不是用虚析构函数的话,就不会调用派生类的析构函数.

这个Subclass中new分配的内存就没有得到释放.

关于静态方法:

静态方法也可以称之为类方法,从Java中加深了对此的了解.

一般在函数定义前加上static关键字.调用静态成员函数格式为:

::();

.();

静态成员函数的主要作用是用来访问同类中静态成员,维护对象之间共享的数据.

这里容易出现的问题,就是在静态函数中访问实例成员或者函数.

但是由于静态成员函数没有this指针,它只能直接访问该类的静态数据成员,静态成员函数,和类以外的函数和数据,访问类中的非静态数据成员必须通过参数传递方式得到对象名,然后通过对象名来访问.

关于虚析构函数作用示例见我的另一文章吧.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值