C++(例题集—简单解析-类与对象)

本文介绍了C++中类与对象的相关知识,包括对象的创建与使用、类成员的访问控制、信息隐藏、构造与析构函数、对象的赋值与复制、对象数组、指针与引用、动态创建与销毁、类的组合、静态成员及友元。通过实例和例题,深入探讨了C++中类的各种操作和应用。
摘要由CSDN通过智能技术生成

由于自己本人上课不太认真,只能靠自己学习例题总结。

希望能给大家一些便捷,让大家开心学习C++。

对象的创建与使用:

例题5-1    定义一个点类,生成对象,将点的坐标显示在屏幕上:

#include<iostream>
using namespace std;
class Point{
    int x,y;
public:
    void setXY(int a,int b){
        x=a;
        y=b;
    }
    int getX(){
        return x;
    }int getY(){
        return y;
    }
};
int main()
{
    Point p1,p2;
    p1.setXY(1,2);
    p2.setXY(3,4);
    cout<<"点p1的x坐标为:"<<p1.getX()<<endl;
    cout<<"点p1的y坐标为:"<<p1.getY()<<endl;
    cout<<"点p2的坐标为:("<<p2.getX()<<","<<p2.getY()<<")"<<endl;
    return 0;

}

例题5-2 观察类的所占的字节:

#include<iostream>
using namespace std;
class A{
    int x;
public:
    void setX(int b){
        x=b;
    }
};
int main(){
    A a;
    cout<<sizeof(int)<<endl<<sizeof(a)<<endl;
    return 0;
}

类成员的访问能力

例题5-3:观察类成员访问控制能力:

#include<iostream>
using namespace std;
class A{
private:
    int i;
public:
    char c;
public:
    void setI(int j){
        i=j;
    }
    void display(){
        cout<<"i="<<i<<endl<<"C="<<c<<endl;
    }
};
class B{
public:
    char c;
public:
    void display(){
        cout<<"c="<<c<<endl;
    }
};
int main(){ 
    A a;
    B b;
    //a.i=1;                error
    a.c='e';b.c='f';       //ok
    a.setI(8);             //通过接口访问公有成员
    a.display();           //ok
    b.display();
    return 0;
}

通过这个例子容易看出来:其实对于类来说  :在类外面只能访问公有的成员。

但是对于要访问私有成员:需要利用公有成员函数间接调用。

实例1:设计一个圆Circle类,能够求出圆的面积:

#include<iostream>
#include<cmath>
using namespace std;
const double Pi=acos(-1);
class Circle{
private:
    double m_r;
public:
    void setR(double r){
        m_r=r;
    }
    double getR(){
        return m_r;
    }double getArea(){
        return Pi*m_r*m_r;
    }
};
int main()
{
      Circle c;
      c.setR(3);
      cout<<"Circle's r is "<<c.getR()<<endl;
      cout<<"Circle's area is "<<c.getArea()<<endl;
      return 0;
}

通过这个实例其实可以看出来:

调用公有的成员函数或者变量:直接用    “.”来实现好比C语言里的结构体。


实例2:设计一个数字时钟,可以设置时间和显示时间

#include<iostream>
using namespace std;
class Clock{
private:
    int h;
    int m;
    int sec;

public:
    void setTime(int nh,int nm,int ns){
        h=nh;
        m=nm;
        sec=ns;
        if(h<0||h>23||m<0||m>59||sec<0||sec>59){
            cout<<"illegal! time"<<endl;
            exit(1);
        }
    }
    void showTime(){
        cout<<h<<":"<<m<<":"<<sec<<endl;
    }
};
int main(){
    Clock a;
    a.setTime(14,1,2);
    a.showTime();
    return 0;
}

类的信息隐藏

由于为了实现利用类的接口,需要把设置        .h    和    .cpp    两个文件来分别实现。

.h     负责实现提供类的声明和类函数的实现,

.cpp    负责利用类对应的接口函数来实现对应功能即可.


建立2个文件,分别存放长方形Rectangle 类的声明和实现、类的使用。

//#ifndef RECTANGLE_H_INCLUDED
//#define RECTANGLE_H_INCLUDED
class Rectangle{
    int len,w;
public:
    void setL(int len);
    void setW(int w);
    int getL();
    int getW();
    int getArea();
};


//#endif // RECTANGLE_H_INCLUDED
#include"Rectangle.h"
#include<iostream>
using namespace std;
void Rectangle::setL(int L){
    len=L;
    if(L<0){
        printf("L:illegal!\n");
        exit(1);
    }
}
void Rectangle::setW(int W){
    w=W;
    if(W<0){
        printf("W:illegal!\n");
        exit(1);
    }
}
int  Rectangle::getL(){
    return len;
}
int  Rectangle::getW(){
    return w;
}
int Rectangle::getArea(){
    return len*w;
}
int main(){
    Rectangle A;
    A.setL(10);
    A.setW(20);
    cout<<"L:    "<<A.getL()<<endl;
    cout<<"W:    "<<A.getW()<<endl;
    cout<<"Area: "<<A.getArea()<<endl;

    return 0;
}

对象的初始化与消亡:

构造函数

由于类的复杂性,有必要专门设计一个函数来进行对象的初始化工作,

引例:初始化时刻需要做点是什么.如定义了一个新的对象时,需要设计一些提示词:

如“创建完成,目前是第N个对象”.

一个简单的例子:

#include<iostream>
using namespace std;
class A{
    int i;
public:
    A(){
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值