1.1 本章要点
在面向对象的程序设计中,首先要把对象的概念放在第一位。对象具有属性以及方法。 例如我们要去描述一个人的状态,那么这个人就是一种类(class)的对象,而涉及到这个人的身高、年龄、体重等则是这个人的属性。在C++的代码中,属性用数据表示,方法用函数表示。
类用关键字class定义,类中的数据可以用关键字public、private和protected修饰。
通常成员函数为公有的,但成员数据却是私有的,外部通过公有的成员函数来访问私有的类中的数据,或者说,外部并不能直接地访问私有成员,但是可以借助公有成员去访问私有成员。
当成员函数过长的时候,也可以在类外定义成员函数本体,格式为:
返回类型 类名::成员函数名(形参表)
{
函数体;
}
书上提及的思考题:
1.如有定义double y=3/2;当用语句cout<<y<<endl;输出的y为多少?
答:输出的结果为1,但是如果更改为double y=3.0/2.0,则输出的结果变为了1.5。很有意思的一点,当我输入7/3时,它输出2,但是转换为7.0/2.0时,则变为了2.3333,我认为应该是如果只是输入3和2,则仍然默认y为int值,计算出来的结果为int值,再转换为double,也还是2,但是只要其中有一方为double,则y也就可以得出小数。
2.如有定义char ch=‘B’;当用语句cout<<ch+3<<endl;输出是,求输出结果。
答:输出69.
3.‘a’与"a"之间的区别是什么?
答:'a’表示的是字符常量,但是"a"表示的是一个字符串。这也解释了为什么上一题中输出的为数字,若改成在第二题中定义为"B",则运行出错。
附上两个小知识点:
1.iostream.h与iostream之间的区别不大,前者主要为C语言服务,后者主要为C++服务,在C++中使用两者均可。在C++中使用输入/输出流对象cin、cout时应该包含此头文件。
2.string.h中的常用函数如下:strlen求字符串长度strcmp比较2个字符串是否一样strcat字符串连接操作strcpy字符串拷贝操作strncat字符串连接操作(前n个字符)strncpy字符串拷贝操作(前n个字符)strchr查询字串strstr 查询子串
1.2典型实例分析
例2-1-1 编写一个程序,首先定义一个类area用于描述长方形的面积。类中有两个私有数据x、y;有三个公有的成员函数area、print、areas,分别用于初始化、输出与计算面积。
程序:
在定义公有函数部分时,又重新定义了一个areas函数,不要误以为写错了
例2-1-2 编写程序,程序功能是描述某个人的姓名name、年龄age、住址addr的类person。类对象调用成员函数show输出此人的姓名、年龄和住址。
程序:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020120722522036.png
这道题我再想一想
1.3习题参考解答
构造函数和析构函数的功能是什么?
构造函数是指对象建立时,系统自动调用构造函数,对类对象赋初值;当结束程序时,系统自动调用析构函数释放对象。