语法总结

来源:互联网 发布:java包的命名规范 知乎 编辑:程序博客网 时间:2024/05/22 01:41
1.c++中,class C:public A,B和class C:public A,public B有什么区别

默认的话应该是私有成员,所以B没有public的话就是private了吧,前面的关键字只代表继承方式和访问权限,没加那些关键字的话默认为私有继承。

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

2.在C++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替换混淆使用。
这几个词是:  
函数指针——指针函数  
数组指针——指针数组  
类模板——模板类  
函数模板——模板函数  
最终在使用中,我们就可以让它们实至名归,名正言顺。  

1>.函数指针——指针函数  

函数指针的重点是指针。表示的是一个指针,它指向的是一个函数,例子:  

int   (*pf)();  

指针函数的重点是函数。表示的是一个函数,它的返回值是指针。例子:  

int*   fun();  



2>.数组指针——指针数组  

数组指针的重点是指针。表示的是一个指针,它指向的是一个数组,例子:  

int   (*pa)[8];  

指针数组的重点是数组。表示的是一个数组,它包含的元素是指针。例子;  

int*   ap[8];  



3>.类模板——模板类(class   template——template   class)  

类模板的重点是模板。表示的是一个模板,专门用于产生类的模子。例子:  

template   <typename   T>  

class   Vector  

{  

…  

};  

使用这个Vector模板就可以产生很多的class(类),Vector<int>、Vector<char>、 Vector<   Vector<int>   >、Vector<Shape*>……。  

模板类的重点是类。表示的是由一个模板生成而来的类。例子:  

上面的Vector<int>、Vector<char>、……全是模板类。  

这两个词很容易混淆,我看到很多文章都将其用错,甚至一些英文文章也是这样。将他们区分开是很重要的,你也就可以理解为什么在定义模板的头文件.h时,模 板的成员函数实现也必须写在头文件.h中,而不能像普通的类(class)那样,class的声明(declaration)写在.h文件中,class 的定义(definition)写在.cpp文件中。请参照Marshall   Cline的《C++   FAQ   Lite》中的[34]   Container   classes   and   templates中的[34.12]   Why   can't   I   separate   the   definition   of   my   templates   class   from   it's   declaration   and   put   it   inside   a   .cpp   file?

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

原创粉丝点击