关闭

《VC++深入详解》学习笔记——掌握C++

发表于:2009-12-17 10:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

#
DotNet

  题外话

  打开掌握C++这一章节,首先想到的是以前我非常喜欢的一个英语教师老罗说的一句话:一个人如果连自己的母语都学不好,那他很难学好一门外语。接触程序开发差不多有4,5年的时间了,现在看来,我是那个没有学好母语的人。

  大学期间学的第一门程序设计语言是C++,成果可以用惨烈来形容,课程结束之后留下的印象大概就是:指针太繁琐了,C++博大精深啊!再后来便喜欢上了一种叫做asp.net的开发技术,因为它其中使用的C#语言是没有指针的。很不幸的是做asp.net开发这几年我只是粗略的翻过《C#入门经典-第三版》和《C#高级编程-第四版》,至于程序员必备的MSDN,我基本上都没安装过,罢了,从零开始,学习C++。

  看《VC++深入详解》这本书之前,每天大概2个小时,花了半个月的把《C++ Primer-第四版》看了一遍,因为实际动手较少,只能说有一个初略的了解,对C就完全没有概念了,只能猜测下C和C++在基本的表达式,语句和控制流程等基础语法方面是类同的。

  面向对象

  C++是面向对象的程序设计语言,带类的C,比C多出了面向对象的特性,“面向对象”这个概念够大了,面向对象的主要特点有

  • 封装性:把数据和操作数据的函数组织在一起,不仅使程序更加紧凑,而且提高了类的内部数据的安全性;
  • 继承性:是一个类具有另外一个类的属性(数据)和行为(函数),增加了程序的可拓展性和代码的复用;
  • 多态性:一个接口,不同的实现(很难理解,很难解释)。

  结构和类

  写一个简单的C++程序:

  view sourceprint?
  01 //看完书本中的第一张,VC中很多结构的定义,烦
  02
  03 #include <iostream.h>
  04
  05 struct point//换成class
  06
  07 {
  08
  09        int x;
  10
  11        int y;
  12
  13 };
  14
  15 void main()
  16
  17 {
  18
  19        point pt;
  20
  21        pt.x=10;
  22
  23        pt.y=12;
  24
  25        cout<<"x="<<pt.x<<"y="<<pt.y<<endl;
  26
  27 }

  程序运行,结果是正常的,输出赋值的x和y的值。

  如果把struct换成class,用类来定义就会有问题,这里是由于访问权限的原因struct的数据成员默认是public的,class默认是private。刚开始不明白,后来想想,大概是类的封装特性吧,为了保护类的数据和类的成员函数。

  类和对象

  看过几本C++的书,关于类和对象的说明大多很繁琐,过于的术语话,直到后来看到一篇“面向对象思想,不看后悔“的网文才算对类和对象有了稍微清晰的了解。摘一小段过来,重温下。

  面向对象的编程语言最大的特色就是可以编写自己所需的数据类型,以更好的解决问题。我想我必须要帮你搞清楚“类,对象,属性,方法它们之间的关 系”!就像我前面所说的,人这个“类”是什么也做不了的,因为“人类”只是一个抽象的概念,它不是实实在在的“东西”,而这个“东西”就是所谓的对象。只 有人这个“对象”才能去工作。而类呢?类是对象的描述!对象从类中产生出来!此时,对象具有类所描述的所有的属性以及方法。

  也许你已经有些不知所措了,没关系!好好的回味一下,我再举个例子!例如电视机,电视机都有工作原理图,那么什么叫电视机呢?只要它能够实现工作原理图的 所有功能的物体,我们都叫它电视机。你想想是不是这么一回事儿?可是,电视机原理图是不能工作的,也就是这个原理图不能收看节目,只有电视机这个“实体 ——即所谓的对象”才能收看节目,也就是说,从类生成出对象之后才算得上是真正的有意义!才能开始工作。此时,电视机拥有电视原理图所描述的所有的属性及 方法!明白了吧,呵呵!

  我先前介绍过,类是属性与方法的集合。而这些属性与方法可以被声明为私有的(private),公共的(public)或是受保护(protected)的,他们描述了对类成员的访问控制。下面我分别做一下介绍:

  1. 公共的(public):把变量声明为公共类型的之后,那么就可以通过对象来直接访问,一切都是暴露无遗的!也就是说,你的信用卡密码别人也能够直接得到。

  2. 私有的(private):如果把变量声明为私有的情况就好多了,想要得到我的信用卡密码,对象必须要调用专用的方法才能够得到。

  3. 受保护的(protected):介绍继承时再讨论。

  为了实现数据的封装,提高数据的安全性,我们一般会把类的属性声明为私有的,而把类的方法声明为公共的。这样,对象能够直接调用类中定义的所有方法,当对 象想要修改或得到自己的属性的时候就必须要调用以定义好的专用的方法才能够实现。你想想,你会把你的信用卡密码公布出来嘛?呵呵!所以,我们提倡的是: “对象调方法,方法改属性”;

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号