关于构造函数和普通函数的思考

构造函数的特点:

  1.使用方法: new fn();

  2.构造函数会创建一个新的对象。

  3.构造函数中的this指向的实例化的这个对象

  4.返回值默认为对象

  5.采用大驼峰式命名规则

普通函数的特点:

  1.使用方法: fn();

  2.不会实例化一个对象;

  3.this指向的是调用此方法的对象

  4.返回值是return 后面的参数

  5.采用小驼峰式命名规则

 

关于构造函数的命名规则和普通函数的命名规则做一解释:

  类名采用大驼峰式书写,函数和变量名采用小驼峰式书写,按理来说构造函数也是函数,应该用小驼峰式命名,但是为什么要用大驼峰式命名呢?因为构造函数要和类名保持相同。但是为什么呢?

  下面是我要实现链表的部分代码,假设构造函数采用小驼峰式命名规则如下所示:

template <class ElemType>
struct Node {
	ElemType data;
	Node<ElemType> *next;

	node();
	node(ElemType e, Node<ElemType> * link = NULL);
};
template  <class ElemType>
Node<ElemType>::node() {
	next = NULL;
};
template <class ElemType>
Node<ElemType>::node(ElemType e, Node <ElemType> *link) {
	data = e;
	next = link;
};
Node<ElemType> * p;

那我要实例化一个节点,你说我是用

   p = new node<ElemType>();

还是用

  p = new Node<ElemType<()呢

  采用第一条语句是因为你构造函数是小驼峰式命名啊,但是new 后面应该跟对象,而node<ElemType>看起来更像是一个函数,在一个应该出现对象的地方你来一个函数是什么鬼?

  采用第二条语句是因为new 后面得跟一个对象啊,而Node<ElemType>看起来很直观表示一个对象,但是,你这条语句没在结构体里面定义啊(定义的是node)。

所以,为了解决上述问题,将构造函数统一使用大驼峰式命名规则,以保持实例化时与逻辑思维(new 后面应该跟对象而不是方法)保持一致。

 

  为了贴我原有的代码采用了结构体做例子....虽然我知道类和结构体不一样.......

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值