美文网首页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