问题1: void test::rp() 在函数类型的后面加上类的名称再加上域区分符(::)再加函数名称,利用这样的方法我们就在类的外部建立了一个名为rp的test类大成员函数(方法),可能很多人要问,这么做有意义吗?在类的内部写函数代码不是更好? 答案是这样的:在类的定义中,一般成员函数的规模一般都比较小,而且一些特殊的语句是不能够使用的,而且一般会被自动的设置成为inline(内联)函数,即使你没有明确的声明为inline,那么为什么有会被自动设置成为inline呢?因为大多数情况下,类的定义一般是放在头文件中的,在编译的时候这些函数的定义也随之进入头文件,这样就会导致被多次编译,如果是inline的情况,函数定义在调用处扩展,就避免了重复编译的问题,而且把大量的成员函数都放在类中使用起来也十分不方便,为了避免这种情况的发生,所以c++是允许在外部定义类的成员函数(方法)的,将类定义和其它成员函数定义分开,是面向对象编程的通常做法,我们把类的定义在这里也就是头文件了看作是类的外部接口,类的成员函数的定义看成是类的内部实现。写程序的时候只需要外部接口也就是头文件即可,这一特点和我们使用标准库函数的道理是一致的,因为在类的定义中,已经包含了成员函数(方法)的声明。 问题二 域区分符和外部全局变量和类成员变量之间的关系。 这里牵扯到一个隐藏的this指针的问题,上面的代码在调用a.rp()的的时候,系统自动传递一了个a对象的指针给函数,在内部的时候pp=100;的时候其实就是this->pp=100; 所以你把上面的成员函数写成如下形势也是正确的: void test::rp() 类的成员函数和普通函数一样是可以进行重载操作的,关于重载函数前面已经说过,这里不再说明。 #include <iostream>
|
正在阅读:C++面向对象编程入门:类(class)C++面向对象编程入门:类(class)
2005-03-08 15:56
出处:PConline
责任编辑:xietaoming
键盘也能翻页,试试“← →”键