类的具体使用方法

类和对象的定义与访问:
类的定义:
类型(type)是一个概念的具体表示。依照OO的理念:如果不
能用内置类型表达一个概念,则我们设计一个新类型去表达
一个概念。
任何一个数据类型都封装两方面的信息:
数据
操作
类的组成
一组数据成员(data member)
定义了该类对象所共有的属性
(类似于结构体成员)
一组成员函数(member function)
定义了该类对象所共有的操作
(类似于结构体中的函数)

一个简单的类
Student 类
该类对象所共有的属性
姓名,学号,专业,年级,数学成绩,英语成绩…
该类对象的操作
转专业
跳级/留级
输出每个对象的信息
修改每个对象的信息
等等
利用学生类可以构造一个学生对象。

C++类的声明形式
类是一种用户自定义类型,声明形式:
class 类名称
{
public:
公有成员(外部接口)
private:
私有成员
protected:
保护型成员
} ;
类定义必须以分号“”结束。
类的任何成员都必须指定访问属性。一般将数据成员定义为私有成员或保护成员,将成员函数定义为公有成员。
c++ 中为什么要定义public, protect, private 三种访问权限?
对于类的成员来说,有些需要给外面看的,也就是对外接口,那么就是public,如果没有,那么我们做的工作将是毫无意义的,(别人没法用)。如果不想让别人知道内部的实现细节,那么就是private
如:
public:
count()
{ mycount();}
private:
mycount();
这样,count是对外的接口,而实现的时候,我们不想让外面知道怎么实现的,就用private,防止它用mycount。
如果不想让别人知道,想让自己的孩子什么的知道(这里涉及到继承),那么就可以作为protected
这样,private是自己私有的,protected是可以让孩子知道的,public是公开的!
三种访问控制的特点
private:只能由
1.该类中的函数
2.其友元函数访问
不能被任何其他访问,该类的对象也不能访问。

protected:可以被
1.该类中的函数
2.派生类的函数
3.以及其友元函数访问
但不能被该类的对象访问。

public:可以被
1.该类中的函数
2.派生类的函数
3.其友元函数访问
4.该类的对象访问
注:
友元函数包括3种:
设为友元的普通的非成员函数;
设为友元的其他类的成员函数;
设为友元类中的所有成员函数。
如果紧跟在类名称的后面声明私有成员,则关键字private可以省略:
class Clock
{
int Hour,Minute,Second;
public:
void SetTime(int NewH, int NewM, int NewS);
void ShowTime();
};

钟表类:
class Clock
{
public:
void SetTime(int NewH, int NewM, int NewS);
void ShowTime();
private:
int Hour, Minute, Second;
};
成员数据
成员函数

圆类:
const float pi=3.14;
class Circle
{
public:
void SetRadius (float r1){r=r1;}
float GetPerimeter(){ return 2pir;}
float GetArea(){ return pirr;}
private:
float r;
};成员数据
成员函数
成员数据:与一般的变量声明相同,但需要将它放在类的声明体中。
类定义和使用时应注意:

  1. 在类的声明中不能对数据成员进行初始化。
    class Date
    {
    int d = 1;
    int m = 10;
    int y = 1949;
    }; 这样是错误的!!!!!
    //以后会讲到构造函数来解决这个问题
  2. 类的任何成员都必须指定访问属性,一般将数据成员定义为私有成员或保护成员,成员函数定义为公有成员
  3. 类中的数据成员可以是C++语法规定的任意数据类型,但不能用存储类型auto、register或extern进行修饰。
  4. 类的成员可以是其他类的对象,但不能以类自身的对象作
    为本类的成员。
  5. 类定义必须以分号“;”

成员函数
可以在类中说明原型,在类外给出函数体实现,并在函数名前使用类名加以限定。
将成员函数在类外定义的一般形式是:
返回类型 类名∷成员函数名(参数表)
{
// 函数体
}
也可以直接在类内给出函数体,形成内联成员函数。
允许声明重载函数和带默认形参值的函数

class Clock
{
public:
void SetTime(int NewH, int NewM, int NewS);
void ShowTime();
private:
int Hour, Minute, Second;
};
void Clock::SetTime(int NewH, int NewM,int NewS)
{
Hour=NewH;
Minute=NewM;
Second=NewS;
}
void Clock::ShowTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second;
}

对象
类描述了一类问题的共同属性和行为。
类与对象的关系,如同C++基本数据类型和该类型的变量
之间的关系。
类的对象是该类的实例或实体,即类类型的变量。
类的对象声明形式:
类名 对象名;
例:
Clock myClock;
跟普通的变量一样,当定义对象时,申请存储空间(编译器
根据类的成员变量的定义分配存储空间)
(2)声明了类之后,在使用时再定义对象,定义的格式与一般变量的定义格式相同
例如:
class Coord {
//…
};
// …
main()
{
Coord op1,op2;
// …
}
(1)在声明类的同时,直接定义对象,即在声明类的右花括号“}”后,直接写出属于该类的对象名表。
例如:
class Coord {
public:
void setCoord(int,int);
int getx();
int gety();
private:
int x,y;
}op1,op2;

类中成员的访问方式:
类中成员互访
直接使用成员名
类外访问
使用“对象名.成员名”方式访问 public 属性的成

对象成员的引用

  1. 通过对象名和成员运算符访问对象成员
    一般形式: 对象名.成员名
    例如:
    stud1.num=100;
    stud1.display();
    在类外只能访问public成员,不能访问private成员。
    class Student
    {
    public:
    int num;
    char name[20];
    char sex;
    public:
    void display();
    } stud1;
    2.通过指向对象的指针访问对象中成员
    一般形式:指针名->成员名
    如:
    student stud1,*p;
    p=&stud1;
    cout<num;
    :p->num, (*p).num, stud1.num三者等价.
    3.通过对象的引用访问对象中成员
    如:
    student stud1;
    student &stud2=stud1;
    cout<<stud2.num;

下面来看一个栗子:

在这里插入图片描述
下面是俺自己敲滴代码:

#include <iostream>

using namespace std;
double Pi=3.14159,x=35,y=20;

class pool          //定义一个泳池类
{
    public:
    void poolr(double R);
    double pools();    //圆面积
    double poolc();    //圆周长
    private:
    double r;
};
void pool::poolr(double R)
{
  r=R;

}

double pool::pools()
{
    return Pi*r*r;
}

double pool::poolc()
{
    return 2*Pi*r;
}
int main()
{
    pool a,p;   //a为泳池 p为泳池+过道
    double b;
    cin>>b;
    a.poolr(b);
    a.pools();
    p.poolr(b+3);
    p.pools();
    p.poolc();
    cout<<"泳池半径:"<<b<<endl;
    cout<<"过道造价:"<<20*(p.pools()-a.pools())<<endl;
    cout<<"栅栏造价:"<<p.poolc()*35<<endl;

    return 0;
}
//运行结果:
/*
10
泳池半径:10
过道造价:4335.39
栅栏造价:2858.85

Process returned 0 (0x0)   execution time : 3.829 s
Press any key to continue.



*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值