C++中的一些关键点

一、

∷”是作用域限定符(field qualifier)或称作用域运算符,用它声明函数是属于哪个类的。如果在作用域运算符“∷”的前面没有类名,或者函数名前面既无类名又无作用域运算符“∷”

,比如如∷display( )display( )则表示display函数不属于任何类,这个函数不是成员函数,而是全局函数,即非成员函数的一般普通函数。


二、

参数初始化表来实现对数据成员的初始化

Box∷Box(int h,int w,int len):height(h),width(w),length(len){ }

结果为height = h;width = w; length = len;


三、

构造函数和析构函数的执行顺序:



四、 类模版(template)):

有时,有两个或多个类,其功能是相同的,仅仅是数据类型不一样,这时候就需要类模版

类模版的范例如下:

template<class numtype> //声明一个模板,虚拟类型名为numtype
class Compare //类模板名为Compare
{
public:
	Compare(numtype a,numtype b)
	{
		x=a;
		y=b;
	}
	numtype max( )
	{
		return (x>y)?x:y;
	}
	numtype min( )
	{
		return (x<y)?x:y;
	}
private:
	numtype x,y;
};

从上面可以看出:

声明类模板时要增加一行 template <class 类型参数名>

原有的类型名int换成虚拟类型参数名numtype。在建立类对象时,如果将实际类型指定为int型,编译系统就会用int取代所有的numtype。如果指定为float型,就用float取代所有的numtype。这样就能实现“一类多用”。

在声明了一个类模板后,怎么使用它?怎样使它变成一个实际的类?

先回顾一下用类来定义对象的方法:

Compare_int cmp1(4,7); //Compare_int是已经声明的类

用类模板定义对象的方法与此相似,但是不能直接写成Compare cmp(4,7); // Compare是类模板名

Compare是类模板名,而不是一个具体的类,类模板体中的类型numtype并不是一个实际的类型,只是一个虚拟的类型,无法用它来定义对象。必须用实际类型名去取代虚拟的类型,具体的做法是:

Compare <int> cmp(4,7);

即在类模板名之后再尖括号内指定实际的类型名,在进行编译的时候,编译系统就用int取代类模版中的类型参数numtype。

归纳总结:

我们可以这样声明和使用类模板;




五、多重继承

允许一个派生类同时继承多个基类。这种行为称为多重继承(multiple inheritance)。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值