17 - 05 - 11 C++初窥

来源:互联网 发布:网络电子游艺漏洞 编辑:程序博客网 时间:2024/04/29 22:20

l 函数重载(函数多态)

可以有多个同名函数,只要他们的参数不同即可。

int store (int ,int);

int store (long ,long);

int store (long);

 调用该函数时,指定的参数决定了调用哪一个版本

l 缓冲区存储; 定义一个数组 yum[100]来存储字符串。

(如char yum [ ] = “Zombie liion”)

std::cin >> yum;

但是如何保证用户的输入不会溢出?而且如果用户输入了空格,cin 会认为字符串就此结束,

不再会将接下来的内容写入缓冲区。

为了解决这个问题,必须调用cin 对象的方法getline并

提供两个参数 1、要填充的缓冲区 2、最多读取的字符数。

   std::cin .getline(yum,18)

   这样可以读取18个字符,包括空字符(空格)

   在遇到回车后 停止读取。

  还可以:  std::cin .getline ( yum,18,‘ ’);

  这条语句在遇到空格后即停止读取输入。

ex:  char name[100];

      std::cin .getline(name,18);


类和成员

 1) 类的声明(class)比如声明一个Tricycle类:

class Tricycle {      //三轮车public:   unsigned int speed;   pedal();      //踏板   brake();      //刹车 };   

一个成员变量speed 两个成员函数,这三个成员可以被其他类 直接引用。

//声明了类后,系统并不会为这个Tricycle分配内存,

他只是告诉编译器,这个类是什么,包括什么

声明了类后,可以用这个类来创建对象。

ex:Tricycle Yong_Jiu;      //永久牌三轮车 同 int n;   

创建对象后,可使用“ . ”来访问其成员变量/成员函数 

ex :       Yong_Jiu .speed = 6

注意:这里 Tricycle .speed = 6 是不允许的。

调用pedal()函数:  Yong_Jiu .pedal(); 

class Tricycle {      int model = 110;public:   int....   pedal....} 

model并不在public 之列,所以他是私有的(private)

虽然成员变量可以是共有的,但最好将他们都声明为私有的(private)这样只能通过成员函数访问他们,

用于设置或获取私有成员变量值的函数称为 存取器(accessor),其他 类 要使用这些变量,必须调用存取器.

要想访问私有函数,要在类中设置一个共有的接口函数,类的对象需要通过这个接口函数才能访问私有成员。

#include<iostream>using namespace std;class human  {public:void set(int w) { weight = w; }int print ( )  { return weight ; }private:int weight;}; int main ( ) {human Tom;Tom.set(5);cout<<"Tom的体重为:"<<Tom.print()<<"\n";human Mike; Mike.set(7);cout<<"Mike的体重为:"<<Mike.print()<<"\n"; return 0;} 

输出结果如下:   Tom的体重为:5

Mike的体重为:7


看似这么复杂的设置了一个接口是为了提高安全性,比如用户输入了一个超过范围的数,

这个就可以在接口函数set中进行设定:

void set(int w) {if(w>0 && w<100)weight = w;elsecout<<“请将weight的值设置为从0~100,否则系统将会把weight设置为0”weight = 0;}

一般情况下,我们将类的数据成员设置为私有,而使用类的公有函数来访问它,

好处就是数据的赋值和读取分开操作,赋值函数不需要考虑读取函数是如何工作的,

反之亦然,如此便提高了程序的可维护性。











1 0