你的程序有对象吗???——浅谈Class(c++)

你的程序有对象吗???

c++是一种(杂种语言)融合了面向过程和面向对象的一种高级语言。平时竞赛中大家使用的很多是面向过程(至少在我这里是的)。那么,面向对象是什么呢?

class(对象)就像一个属于一个教室的柜子,其中每个人能拿出来的叫公共的东西(public),只能通过公共的东西调动的叫私有的东西(private)

  ()       ( 原 谅 我 的 描 述 )    

看到这,如果学过结构体的同学可能会掀桌(内心:struct!你以为换了个马甲我就不认识你了!)……等下,被冲动,结构体可没对象高级(可能是因为大家都在争取对象吧) 这里写图片描述
class完全碾压了struct(struct:喵喵喵?),因为struct比较虚,它只能包含比较垃圾的数据元素(struct&数据元素:喵喵喵?)而class能包含较复杂的函数。如下:
struct VS.class!!! 世 纪 之 战 ! s t r u c t   V S . c l a s s ! ! !

struct Struct{
  int name1;
  int name2;
}Something,Array[1000];

class Class{
    int name0;//public外默认为private
public:
    int name1;
    void name2(){

    }
private:
    int name3;
    void name4(){

    }
}Something2,Array2[i];

其实class和struct定义没什么区别,但实现的东西明显class更多。但是到这,class的神通还没施展出来……
为了下面的讲解,我们将要创建一个时钟的类(借助了我学的教程):

#include<iostream>
using namespace std;
class Clock{
public:
    void Set_New_Time(int New_Hour,int New_Minute,int New_Second){
    hour=New_Hour;
    minute=New_Minute;
    second=New_Second;
    }
private:             //private可以保护数据不被人从外部破坏
    int hour,minute,second;
}
Clock::showTime(){
    cout<<hour<<":"<<minute<<":"<<second<<endl;
}
int main(){
    Clock My_New_Clock;
    int second,minute,hour;
    cin>>second>>minute>>hour;
    My_New_Clock.Set_New_Time(second,minute,hour);
    My_New_Clock.Show_Time();
    return 0;
}

神通一:构造函数和析构函数

构造函数是一个与类名一样的函数,用来为类中元素赋初值,如下:

#include<iostream>
using namespace std;
class Clock{
public:
    void Set_New_Time(int New_Hour,int New_Minute,int New_Second){
    hour=New_Hour;
    minute=New_Minute;
    second=New_Second;
    }
    Clock(int New_Hour,int New_Minute,int New_Second){
        hour=New_Hour;
        minute=New_Minute;
        second=New_Second;
}
private:             //private可以保护数据不被人从外部破坏
    int hour,minute,second;
}
Clock::showTime(){
    cout<<hour<<":"<<minute<<":"<<second<<endl;
}
int main(){
    Clock My_New_Clock;
    int second,minute,hour;
    cin>>second>>minute>>hour;
    My_New_Clock.Clock(1,2,3);
    My_New_Clock.Set_New_Time(second,minute,hour);
    My_New_Clock.Show_Time();
    return 0;
}

要注意的是,构造函数也能复制哦……但这里不讲。(其实是我也懵)


有构造函数,肯定会有析构函数(不要问我为什么) 它就是构造函数前加个”~”,能回收“垃圾” 。

神通二:组合类

组合类是一个类中包含另一个了,如下:

class Worker{
private:
    string name;
    int age;
    string job;
public:
    string Give_A_Job(string job){
        return job;
    }
};
class Company{
public:
    //something……
private:
    int Number;
    Worker My_Worker[100000];//here!!!!!
};

神通三:继承

这里很好理解,就是继承遗产一个类的所有东西,如下

class A{
    //something
};
class B:public A{
    //something
}

剩下的神通(网上盗来的)

  1. 多态:多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数
  2. 抽象:数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节
  3. 封装:封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全
看了这些,你的程序还单身没有对象吗,毕竟这么好用(java & c#程序:呸!);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值