千家信息网

C++核心编程类和对象详解

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容介绍了"C++核心编程类和对象详解"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录1.封装
千家信息网最后更新 2025年01月19日C++核心编程类和对象详解

本篇内容介绍了"C++核心编程类和对象详解"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

目录
  • 1.封装

    • 1.1封装的意义

      • 封装意义一:

      • 封装意义二

    • 1.2 struct 和 class 区别

      • 1.3 成员属性设置为私有


    C++面向对象三大特性:封装、继承、多态

    1.封装

    1.1封装的意义

    • 将属性和行为作为一个整体

    • 将属性和行为加以权限控制

    封装意义一:

    语法:class 类名{ 访问权限: 属性 / 行为 };

    //实例1#define _CRT_SECURE_NO_WARNINGS 1//求圆的周长#includeusing namespace std;#define pi 3.14class circle{public:        int m_d;//直径        double calculate()        {                return pi*m_d;        }};int main(){        circle c1;        c1.m_d = 10;        cout << "圆周长为" << c1.calculate() << endl;        system("pause");        return 0;}
    //实例2#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;#include class Student{public:        string m_name;        int m_num;        void showStudent()        {                cout << " 姓名:" << "\t" << m_name << " 学号:" << m_num << endl;        }        void setname(string name)        {                m_name = name;        }        void setnum(int num)        {                m_num = num;        }};int main(){        Student s1;        s1.setname("zhangsan");        s1.setnum(2001);        s1.showStudent();        Student s2;        s2.setname("lisi");        s2.setnum(2002);        s2.showStudent();    system("pause");        return 0;}

    总结:类中的 属性行为 统一称为 成员

    类中的 属性 又称为 成员属性 成员变量

    类中的 行为 又称为 成员函数 成员方法

    封装意义二

    访问权限有三种

    公共权限: public 成员类内可以访问,类外可以访问

    保护权限: protected 成员类内可以访问,类外不可以访问 儿子可以访问父亲中的保护内容

    私有权限: private 成员类内可以访问,类外不可以访问 儿子不可以访问父亲中的保护内容

    #define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;#include class Student{public:        string m_name;protected:        int m_num;private:        int m_age;public:        void func()        {                m_name = "lili";                m_num = 1;                m_age = 30;        }private:        void func1()        {                m_name = "lili";                m_num = 1;                m_age = 30;        }};int main(){        Student s1;        s1.m_name = "lilllll";        //s1.m_num = 2;//不可访问        //s1.m_age = 20;//不可访问        s1.func();        //s1.func1();//不可访问    system("pause");        return 0;}

    1.2 struct 和 class 区别

    在C++中 struct 和 class 区别在于 默认的访问权限不同

    • struct 默认权限为公共

    • class 默认权限为私有

    #define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;class C1{        string m_a;};struct C2{        string m_b;};int main(){        //C1 c1;        //c1.m_a = "lili";//不可访问        C2 c2;        c2.m_b = "lili";    system("pause");        return 0;}

    1.3 成员属性设置为私有

    优点:

    • 将所有成员属性设置为私有,可以自己控制读写权限

    • 对于写权限,我们可以检测数据的有效性

    #define _CRT_SECURE_NO_WARNINGS 1#include#include using namespace std;class C1{public:        void setname(string name)        {                m_name = name;        }        string getname()        {                return m_name;        }        int getnum()        {                return m_num;        }        void setage(int age)        {                m_age = age;        }private:        string m_name;        int m_num;        int m_age;};int main(){        C1 c;        c.setname("yangyang");//可写        cout << c.getname() << endl;//可读        cout << c.getnum() << endl;//只读        c.setage(30);//只写    system("pause");        return 0;}

    好的,到这里封装就算是学到手了,可以进行两个小案例:

    #define _CRT_SECURE_NO_WARNINGS 1#include#include using namespace std;class Cube{public:        void setchang(int chang)        {                m_c = chang;        }        void setkuan(int kuan)        {                m_k = kuan;        }        void setgao(int gao)        {                m_g = gao;        }        int getchang()        {                return m_c;        }        int getkuan()        {                return m_k;        }        int getgao()        {                return m_g;        }        int S()        {                return 2 * (m_c*m_g + m_c*m_k + m_g*m_k);        }        int V()        {                return m_c*m_g*m_k;        }        bool isSamebyclass(Cube &c)        {                if (m_c == c.getchang() && m_g == c.getgao() && m_k == c.getkuan())                {                        return true;                }                return false;        }private:        int m_c;        int m_k;        int m_g;};bool isSame1(Cube &c1, Cube &c2){        if (c1.getchang() == c2.getchang() && c1.getgao() == c2.getgao() && c1.getkuan() == c2.getkuan())        {                return true;        }        return false;}int main(){        Cube c1;        c1.setchang(10);        c1.setkuan(10);        c1.setgao(10);        cout << "面积:" << c1.S() << endl;        cout << "体积:" << c1.V() << endl;        Cube c2;        c2.setchang(11);        c2.setkuan(11);        c2.setgao(11);        cout << "面积:" << c2.S() << endl;        cout << "体积:" << c2.V() << endl;        bool ret = isSame1(c1, c2);        if (ret)        {                cout << "全局函数判断:两个立方体相等" << endl;        }        else        {        cout << "全局函数判断:两个立方体不相等" << endl;        }        ret = c1.isSamebyclass(c2);        if (ret)        {                cout << "成员函数判断:两个立方体相等" << endl;        }        else        {                cout << "成员函数判断:两个立方体不相等" << endl;        }        system("pause");        return 0;}
    #define _CRT_SECURE_NO_WARNINGS 1#include#include using namespace std;class Point{public:        void setX(int x)        {                m_x = x;        }        int getX()        {                return m_x;        }        void setY(int y)        {                m_y = y;        }        int getY()        {                return m_y;        }private:        int m_x;        int m_y;};class Circle{public:        void setR(int r)        {                m_r = r;        }        int getR()        {                return m_r;        }        void setcenter(Point center)        {                m_center = center;        }        Point getcenter()        {                return m_center;        }private:        int m_r;        Point m_center;};void C_and_P(Circle &c, Point &p){        int distance = (c.getcenter().getX() - p.getX())*(c.getcenter().getX() - p.getX()) + (c.getcenter().getY() - p.getY())* (c.getcenter().getY() - p.getY());        int doubleR = c.getR()*c.getR();        if (distance==doubleR)        {                cout << "点在圆上" << endl;        }        else if (distance

    "C++核心编程类和对象详解"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

    0