美文网首页Android开发经验谈Android开发c/c++
C ++ 基础语法之抽象类,动态内存

C ++ 基础语法之抽象类,动态内存

作者: 毛先森 | 来源:发表于2019-08-02 10:25 被阅读1次

    前言

    最近在看《我是一个程序员》,这是一本由阿里服务器工程师写的工作总结,记录了他从校招进入阿里的懵懵懂懂,到成为 Leader 主导开发,从他的心路历程中确实学到蛮多东西,比如作为一个技术人员的工作态度:少抱怨,技术人就是来解决问题的,而抱怨解决不了任何问题.

    面向对象编程的基础让我没花多久就开始入手 C++,在这篇笔记中,将重点记录 C++ 的多态,抽象以及内存等知识点.因为 C++ 的异常处理和 Java 在语法上没有差别(关键字以及异常类的继承关系和 Java 类似),所以不再记录异常处理的相关知识.

    目录

    • 抽象类
    • 动态内存

    抽象类

    含有纯虚函数的类被称之为抽象类,定义如下:

        virtual void method() = 0;
    
    # include<iostream>
    # include<cstring>
    
    using namespace std;
    
    class Player {
        
        public:
            virtual void pause() = 0;
        
            void setName(string name){
                _name = name;   
            }
                
            void play(){
                cout<<_name<<endl;
            }   
            
        private :
            string _name;       
        
    };
    class FxPlayer : public Player{
        
        public :
             void pause(){
                cout<<"暂停播放"<<endl; 
             }
    };
    
    int main(){
       
       FxPlayer fxplayer;
       fxplayer.setName("测试播放");
       fxplayer.play(); 
       fxplayer.pause();
    return 0;   
    }
    
    image.png

    动态内存

    内存区域划分为两个区域:

    1. 栈: 函数中所有的变量
    2. 堆: 用于动态分配内存的区域

    new 运算符用来在堆内存中分配空间,
    对象使用不同的创建方式,会使用到不同的存储区域,比如我们定义了一个 Person 类:

    1. Person person("名字") : person 在栈中占用空间
    2. Person * person = new Person(); 将在堆中占用空间

    我们都知道 C++ 是没有虚拟机来处理内存回收的,需要手动回收内存,这时就需要用到 delete 操作符来清除对应的堆内存.

    # include<iostream>
    
    using namespace std;
    
    class Test{
      
      public :
        Test(){
            cout<<"构造函数"<<endl;
          }
        
        ~Test(){
            cout<<"析构函数"<<endl;
          } 
          
    }; 
    
    
    int main(){
        Test*test = new Test();
        delete test; 
    return 0;
    } 
    
    image.png

    相关文章

      网友评论

        本文标题:C ++ 基础语法之抽象类,动态内存

        本文链接:https://www.haomeiwen.com/subject/tuekdctx.html