您的位置:首页 > 其它

类的详细介绍

2016-05-29 20:33 183 查看
[b]类[/b]

[b] 这个概念,学过java的人们肯定不陌生。因为java本来就是用类的思想实现的。[/b]

[b] 我在一开始学类和对象的时候,总是问别人:为什么要有类这个语法?[/b]

[b] 而他们总是回答我: 因为类这个东西,是人们写着写着代码而逐渐产生的一种东西。我也不知道这样说对不对,反正他们说c++难就难在这块上面,就像继承与派生,都是人们通过生活演化而来的。[/b]

1.类和对象的定义

类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。

对象是具有类类型的。

类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类

是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。

比方说,一类人,就可以定义为一个类(class Person),而人能干什么呢?

人能说话

人能睡觉

人能看书

........

人有年龄

人有性别

人有名字

........

这些,就是这个Person(人)类的成员,年龄,性别,名字要定义:

class Student

{
public :

void display( );

//公用成员函数原型声明

private :
//此处不一定要写private

int num;

string name;

char sex;

//以上3行是私有数据成员

};

void Student∷display( )

//在类外定义display类函数

{
cout<<″num:″<<num<<endl;

//函数体

cout<<″name:″<<name<<endl;

cout<<″sex:″<<sex<<endl;

}


View Code

那么,怎么调用函数呢?

在继承类里面,调用基类的public函数往往如下调用:

Person::Regsiter();

而在int main()函数里面,则可以定义:

Person P;

p.Regsiter();

注意:以上只是普通public函数的调用方法,后面还有继承和派生、构造函数的调用方法。

对象成员的引用

1.通过对象名和成员运算符访问对象中的成员

例如在程序中可以写出以下语句:

stud1.num=1001;//假设num已定义为公用的整型数据成员

表示将整数1001赋给对象stud1中的数据成员num。

其中“.”是成员运算符,用来对成员进行限定,指明所访问的是哪一个对象中的成员。

注意不能只写成员名而忽略对象名。

访问对象中成员的一般形式为: 对象名.成员名

不仅可以在类外引用对象的公用数据成员,而且还可以调用对象的公用成员函数,但同样必须指出对象名,如

stud1.display( );//正确,调用对象stud1的公用成员函数

display( );//错误,没有指明是哪一个对象的display函数

由于没有指明对象名,编译时把display作为普通函数处理。

应该注意所访问的成员是公用的(public )还是私有的(private )。只能访问public成员,而不能访问private成员,如果已定义num为私有数据成员,下面的语句是错误的:

stud1.num=10101;//num是私有数据成员,不能被外界引用

在类外只能调用公用的成员函数。在一个类中应当至少有一个公用的成员函数,作为对外的接口,否则就无法对对象进行任何操作。

简单程序举例:

[b]设计Person类[/b]

题目内容:

设计一个Person类,包含name、age、sex属性以及对这些属性操作的方法。实现并测试这个类。
根据类的封装性要求,把name、age、sex声明为私有的数据成员。

声明公有的成员函数Register()、ShowMe()来访问这些属性,在Register()函数中对数据成员进行初始化。

person1通过cin来得到信息,person2通过Register("Zhang3",
19, 'm') 来得到信息。

输入格式:

person1的信息

输出格式:

person1和person2的信息

输入样例:

Li4 18 f

输出样例:

Li4 18 f

Zhang3 19 m

时间限制:500ms内存限制:32000kb

代码:

#include<iostream>
#include<cstring>
using namespace std;
class Person
{
private://声明成员变量
char Name[20];
char Sex;
int Age;
public://声明成员函数
void Register(char *name,int age,char sex);
//赋值函数
void ShowMe();
};
void Person::Register(char *name, int age, char sex)
{
//函数体
strcpy(Name,name);
Age=age;
Sex=(sex=='m'?'m':'f');
}
void Person::ShowMe()
{
//输出函数,外界不能输出!
cout<<Name<<" "<<Age<<" "<<Sex<<endl;
}
int age;
char name[20],sex;
int main()
{
Person person1,person2;//定义两个对象
cin>>name>>age>>sex;
person1.Register(name,age,sex);
person1.ShowMe();
person1.Register("Zhang3",19,'m');
person1.ShowMe();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: