zoukankan      html  css  js  c++  java
  • 2.c++程序设计--类与面向对象

    类与面向对象

    封装

    封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节,但可以通过该对象对外的提供的接口来访问该对象。

    继承

    继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承我们能够非常方便地复用以前的代码,能够大大的提高开发的效率。

    多态

    所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。
    参考:https://blog.csdn.net/jianyuerensheng/article/details/51602015

    类与面向对象实例:

    头文件 cTest.h

    #pragma once
    #include <iostream>
    
    class Box
    {
    public:
        Box();//默认的构造函数
        Box(int a,int b,int c);//和类是同名的,叫构造函数
        ~Box();//析构函数,在类的前面加上相反的符号
        int volume() {
            return Length*width*heigth;
        }
    private:
        int Length{5};
        int width = 1;
        int heigth = 1;
    };
    
    inline Box::Box()
    {
        std::cout << "inic wuchanshu" << std::endl;
    }
    
    Box::Box(int a, int b, int c) //构造函数,对象实例化的时候就会调用
    {
        Length = a;
        width = b;
        heigth = c;
        std::cout << "class init" << std::endl;
    }
    
    Box::~Box()
    {
    }

    源文件

    #include "cTest.h"
    
    int main() {
        Box Mybox{1,3,3}; //Box 是一个类,新建一个对象MyBox,
    
    
        std::cout << Mybox.volume() << std::endl;
        return 0;
    }

    利用指针操作类实例:

    #pragma once
    #include <iostream>
    
    class Box
    {
    public:
        Box();//默认的构造函数
        ~Box();//析构函数,在类的前面加上相反的符号
        int volume() {
            return this->Length*this->width*heigth;//this-> 是用指针的方式调用,和直接调用功能一样
        }
        Box * Print_test(int t); //返回一个类型是指针类型的函数
    
    
    private:
        int Length{5};
        int width = 1;
        int heigth = 1;
    };
    
    
    
    Box::Box() //构造函数,对象实例化的时候就会调用
    {
        
        std::cout << "class init" << std::endl;
    }
    
    Box::~Box()
    {
    }
    
    inline Box * Box::Print_test(int t)
    {
        std::cout << t << "
    " << std::endl;
        return this; //返回这个这个对象的指针,通过指针可以继续控制对象里面的函数和变量
    }
    #include "cTest.h"//上面的头文件
    
    int main() {
        Box Mybox; //Box 是一个类,新建一个对象MyBox,
        Mybox.Print_test(1)->Print_test(6)->Print_test(9); //-> 是指针调用对象里面的函数,可以无限调用
    
        std::cout << Mybox.volume() << std::endl;
        return 0;
    }

    运算符重载参考:

    https://blog.csdn.net/jacket_/article/details/89714947

  • 相关阅读:
    fdfs上传图片成功在浏览器中访问不到404 Not Found
    G1 GC日志:Application time: 0.8766273 seconds
    nginx编译问题:make[1]: *** [/usr/local/pcre//Makefile] Error 127
    Datatable报错Uncaught TypeError: Cannot read property 'cell' of undefined
    信息: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level
    [HDU1176]免费馅饼(DP)
    [程序员代码面试指南]二叉树问题-找到二叉树中的最大搜索二叉树(树形dp)
    [程序员代码面试指南]二叉树问题-在二叉树中找到累加和为指定值的最长路径长度
    [程序员代码面试指南]数组和矩阵-求最短通路值(BFS)
    [程序员代码面试指南]9-判断点在三角形内
  • 原文地址:https://www.cnblogs.com/trevain/p/14495815.html
Copyright © 2011-2022 走看看