查看文章 |
【转】应聘软件测试工程师应该具备的C++知识点
2008年08月28日 星期四 14:57
C++是一门面向对象的语言,是一门开发语言。对于只做功能的测试人员来说是不需要掌握的,但有很多公司有时候在笔试和面试的过程中经常问到有关C++的一些知识点。 比如说:什么是类?什么是对象?什么是重载?什么是构造函数?什么是拷贝构造函数?什么是析构函数? 什么是封装?什么是继承?什么是多态?什么是运算符重载? 类是对象是世界的一种抽象,比如我们可以把男人女人抽象为人类,把阿猫阿狗抽象为动物类。 例如: class human { private: 身高; 体重; 姓名; 饭量; public: eating(){饭量=50克;} running(); singing(); }; 对象是类的实例化,比如说我们首先定义了人类,那么我们可以通过定义的人类来生成一个名叫刘德华的对象。 human 刘德华; 我们发现human这个类具有姓名,身高,体重的属性,human能够吃饭跑步和唱歌。 我们一般怎么使用human类呢? 一般是通过human生成一个对象,比如说刘德华。 这样刘德华就具有human类的所有属性和方法,而且可以使用这些属性和方法。 简单举个例子: 大家都喜欢吃雪糕, 做雪糕的模具就是类,我们是没有办法吃的。 但我们可以通过这个模具(也就是类)生成一个雪糕(也就是对象)。 那下面我们说说 什么是封装? 封装也就是信息屏蔽。当然不是对所有的信息都屏蔽。 比如刚才的那个human类,他有private修饰的变量,都是一个私有变量。这个私有变量,我们是没有办法直接访问的(这个就是对于它的直接访问我们进行了有效的屏蔽),我们一般都是通过human生成一个对象比如说: human 刘德华; 我们是通过刘德华的公有函数来访问其私有变量的。 比如私有成员里面有个饭量,对于这个饭量的访问,我们是通过eating这个公有的函数来直接访问私有的成员。 这样我们对类里面的数据有了一个很好的封装。 封装说完了, 我们说几个大家需要知道的基本概念: 重载其实就是函数名字相同,而函数的参数类型或参数个数不同。 构造函数:函数名与类名相同,在定义对象的时候系统自动调用的函数。 析构函数:函数名与类名相同,但是要在函数名名前加~ 号。在对象销毁的时候系统自动调用的函数。 拷贝构造函数:在用一个已经构造好的对象初始化另一对象的时候,系统自动调用的函数。 下面直接说说继承: 什么是继承? 比如说我们定义了一个类为:人类。 class human { } 接着我们又定义了一个类为女人类,我们发现女人是人类的一种,所以女人就可以继承于人类。 class woman: public human { } 如果男人继承了人类,那么凡是人类有的,女人都有,但是女人有的人类就不一定有。比如说女人会生孩子,她又一个生孩子的方法,但人类中的其中一种也就是男人是不会生孩子的。 以后凡是遇到 ...是..的一种的我们都可以用继承。 比如男人是人的一种。 猫是动物的一种。 等等。 在面试中笔试中 继承一般与多态合起来问得比较多。 那什么是多态呢? 抽象成一句话: 多态是用虚函数 实现的, 是用基类的指针指向子类的对象后,我们可以用基类的指针访问与同名的函数,这个时候基类指针会根据它指向的具体对象动态确定访问的函数。 举个例子: 我们有一个shape类,还有一个circle类,还有一个triangle类。 其中circle和triangle继承与shape类,假设这三个类都有相同的成员函数draw() 这个时候, shape *ptr; circle c; triangle t; ptr=&c;用基类指针指向子类对象 ptr->draw(); 基类指针访问同名成员函数时会根据指向的对象而确定是访问那个同名函数。比如这个要访问得是c的draw()方法。 这就是多态。 什么是运算符重载? 也对运算符的进行自定义。一般用operator关键字实现。 比如说原来我有个加法运算符,现在我想把这个加法重定义成减法,使加法运算符实现减法的功能。这样可以吗? 当然可以,但我们一般不这样做。 补充一些额外的: 什么是引用? 引用就是变量的别名,比如有个人叫张天宝,小名 张三拐。 我们可以知道:张天宝和张三拐是一个人。在C++中引用用的也比较多。 什么是this指针? this指针是隐含的指针,它是对象在调用一个函数时就已经隐含存在的,this是指向对象本身的指针。一般是隐含存在的。 比如说,我们前面的讲的human那个类。 刘德华.eating(); 这个时候在eating函数被调用的时候,eating函数内隐含使用的是this对象的成员。 我们来看看eating()函数的实现。 human::eating() { 饭量=50克;这个饭量就是刘德华的饭量,等价与this->饭量=50克; } 声明一下:在C++里面一般称函数为 方法。 数据成员为属性。 其实就是叫法的不同罢了。 上面所说的所有的这些也就是在应聘软件测试工程师中有可能面试到的C++的基础内容,只要大家能够有所了解就可以了。其实我们最应该注重的还是测试能力。 上述都是个人的一些心得体会,可能会有一些讲不到地方。 |
最近读者: