欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > C++ ——类、对象和封装

C++ ——类、对象和封装

2025/2/12 7:59:13 来源:https://blog.csdn.net/2301_81699298/article/details/145564235  浏览:    关键词:C++ ——类、对象和封装

1、面向对象的三大特征

        封装、继承、多态

2、类和对象 

2.1 概念 

类:类是一个抽象的概念,用于描述同一类对象的特点,包含属性和行为

        属性:描述类的数据,一般都是名词

        行为:描述类的具体操作,一般都是动词

对象:根据类的概念所创造的实体

例如:类是人类,对象是张三,属性:姓名 性别 年龄,行为:吃喝睡 学习 睡觉

2.2 类的实例化

类中有两方面内容:

        (1)行为:通过函数实现,也被称为“成员函数”

        (2)属性:保存一些数据元素,也被称为“成员变量”

注意:

        (1)一个对象,必须由其相对应的类去创建(实例化) 

        (2)一个类,如果不用来实例化对象,那么它是没有意义的,除了抽象类

 实例化:类创建对象的过程叫做类的实例化

例如:创建手机类,属性:品牌、颜色、价格;行为:播放音乐、播放视频 

2.2.1 类的格式 

class name{
public:
    name() {}
};

2.2.2 栈内存对象

栈内存对象:在栈区分配空间,由计算机自动回收 

. 的方式调用成员,对象所在的{ }执行完毕后,自动被销毁

#include <iostream>
using namespace std;
class Phone{
public:  //public是权限修饰符,代表公有的(类内、类外都可以访问),表示该属性或行为可以在类外进行访问
    //属性------>成员变量
    string brand;  //品牌
    string color;  //颜色
    double price;  //价格
public:
    //行为------>成员方法
    void play_music() {
        cout<<"播放音乐"<<endl;
    }
    void play_video(){
        cout<<"播放视频"<<endl;
    }
};
int main()
{
    //创建对象
    Phone p1;  //栈内存对象
    //初始化对象的属性
    p1.brand="华为";
    p1.color="红色";
    p1.price=9999;
    //访问或获取对象的属性
    cout<<p1.brand<<endl;
    cout<<p1.color<<endl;
    cout<<p1.price<<endl;
    //调用对象的方法,可以重复调用
    p1.play_music();
    p1.play_video();
    p1.play_music();
    return 0;
}

2.2.3 堆内存对象 

堆内存对象:在堆区分配空间

        用new关键字创建,对象类型的指针(Computer *) ,指向new关键字开辟的空间

        使用->的方式进行调用,堆内存对象需要使用delete关键字手动销毁,并把对象指针置为NULL;如果不销毁会造成内存泄漏,会导致程序的卡顿

#include <iostream>
using namespace std;
class Phone{
public:  //public是权限修饰符,代表公有的(类内、类外都可以访问),表示该属性或行为可以在类外进行访问
    //属性------>成员变量
    string brand;  //品牌
    string color;  //颜色
    double price;  //价格
public:
    //行为------>成员方法
    void play_music() {
        cout<<"播放音乐"<<endl;
    }
    void play_video(){
        cout<<"播放视频"<<endl;
    }
};
int main()
{
    Phone*p2=new Phone;
    //初始化对象的属性
    p2->brand="苹果";
    cout<<"请输入手机的颜色:";
    cin>>p2->color;
    cout<<endl<<"请输入价格:";
    cin>>p2->price;
    cout<<"品牌:"<<p2->brand<<",颜色:"<<p2->color<<",价格:"<<p2->price<<endl;
    p2->play_music();
    //注意:要及时手动释放,避免内存泄漏
    delete p2;
    p2=NULL;
    return 0;
}

3、 封装

        通常情况下,我们会把类中的属性进行封装,就是把属性的权限改成private(私有的),此时,如果外部需要访问类中的私有属性,我们可以提供该属性对外的读或写接口

封装提高了程序的安全性

#include <iostream>
using namespace std;
class Phone{
private:  //私有的:该属性只能在类内访问,不能在类外访问,更安全了
    //属性------>成员变量
    string brand;  //品牌
    string color;  //颜色
    double price;  //价格
public:
    //行为------>成员方法
    void play_music() {
        cout<<"播放音乐"<<endl;
    }
    void play_video(){
        cout<<"播放视频"<<endl;
    }
    //给brand提供一个写接口
    void set_brand(string a){
        brand=a;
    }
    //给brand提供一个读接口
    string get_brand(){
        return brand;
    }
};
int main()
{
    Phone p1;
    //通过接口访问私有属性
    p1.set_brand("小米");
    cout<<"品牌:"<<p1.get_brand();
    return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com