Java,C#,C++在继承,覆盖和多态,抽象类等几个方面的比较归纳

快速了解Java与C#的区别(继承、接口、多态) 接触过C#语言的人想要进入Java语言的学习,我们要学会在i+1的基础上进行,即通过了解两种语言的区别来快速的了解Java语言。在了解两者区别之前我们现了解一下这两种语言。 一、Java Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。 一... 阅读详情

关于C#,C++,Java在继承,覆盖和多态,抽象类等几个方面的比较归纳。
C#,C++用visual studio2005编译通过;java代码用JDK1.4.2编译通过。


一、继承中的带参数构造函数
=============================
C#示例:
//myClass.cs

using System;
using System.Collections.Generic;
using System.Text;

namespace myClass
    class myFirst{
        int value_myFirst;
        public myFirst(int f)
        {
            value_myFirst = f;  
        }
    }
   
    class mySecond : myFirst{
        int value_mySecond;
       
        //构造函数传递参数时,采用base关键字,s在base()中不需重新声明类型int
        public mySecond(int s)
            : base(s)  
        {
            value_mySecond = s;      
        }
    }
       
    class Program
    {
        static void Main(string[] args)
        {
          
        }
    }
}


============================

C++示例:
#include "stdafx.h"

class myFirst{
private:
    int value_myFirst;
public:
    myFirst(int f){
        value_myFirst = f;  
    }
};

//继承需要声明继承的方式,此处是public
class mySecond : public myFirst{ 
private:
    int value_mySecond;
public:
    //构造函数传递参数时,用基类类名,s基类类名()中不需声明类型int
    mySecond(int s) : myFirst(s){
        value_mySecond = s;      
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
 return 0;
}

=============================

java示例:
package com;

class myFirst{
    int value_myFirst;
    public myFirst(int f){
        value_myFirst = f;  
    }
}

//继承采用extends关键字
class mySecond extends myFirst{
    int value_mySecond;
    public mySecond(int s){
        //传递给基类构造函数时,采用super关键字,而且必须是第一条语句。
        super(s); 
        value_mySecond = s;              
    }
}

public class myCon{
    public static void main(String[] args){
       
    }
}

注意:
1.注释中给出了三者的不同点。
2.另外,C++语法中定义的类后面必须加上分号";"
3.访问控制权限public等的格式,C#和java比较类似,C++相差很大。

 

 

二、方法覆盖与多态

C#示例:
//myClass.cs

using System;
using System.Collections.Generic;
using System.Text;

namespace myClass
{
    class myFirst
    {
        int value_myFirst;
        public myFirst(int f)
        {
            value_myFirst = f;
        }
        public void f1()
        {
            System.Console.WriteLine("myFirst.f1()!");
        }
        public virtual void f2()  //virtual也可以提到最前面
        {
            System.Console.WriteLine("myFirst.f2()!");
        }
    }

    class mySecond : myFirst
    {
        int value_mySecond;

        public mySecond(int s)
            : base(s)
        {
            value_mySecond = s;
        }
       
        //使用关键字new覆盖基类中的同名方法
        public new void f1()     //new也可以提到最前面
        {
            System.Console.WriteLine("mySeconde.f1()!");
        }
       
        //error当基类函数myFirst.f1()没有声明为virtual,abstract时不能override!
        //public override void f1() 
        //{
        //    System.Console.WriteLine("mySeconde.f1()!");
        //}
       
        //基类函数中虽然声明是virtual,但是仍然可以用new覆盖。
        //public new void f2()
        //{
        //    System.Console.WriteLine("mySeconde.f2()!");
        //}
       
        ////基类函数中虽然声明是virtual,用override覆盖。
        public override void f2()   //override也可以提到最前面
        {
            System.Console.WriteLine("mySeconde.f2()!");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            myFirst mf = new myFirst(1);
            mySecond ms = new mySecond(2);
            mf.f1(); //myFirst.f1()!
            mf.f2(); //myFirst.f2()!
            ms.f1(); //mySeconde.f1()!
            ms.f2(); //mySeconde.f2()!

            mf = ms; //向上转型之后
            mf.f1(); //myFirst.f1()!
           
            //mySeconde.f2()! 这是用override的运行结果;
            //如果是new那么,结果是myFirst.f2()!
            mf.f2();
        }
    }
}

=============================

C++示例

#include "stdafx.h"
#include <iostream>
using namespace std;

class myFirst{
private:
    int value_myFirst;
public:
    myFirst(int f){
        value_myFirst = f;  
    }

 void f1(){
  cout<<"myFirst.f1()!"<<endl;
 }
 vitual void f2(){  //声明为虚函数
  cout<<"myFirst.f2()!"<<endl;
 }
};

class mySecond : public myFirst{
private:
    int value_mySecond;
public:
    mySecond(int s) : myFirst(s){
        value_mySecond = s;      
    }
   
    //直接覆盖基类函数,无需C#中的new
 void f1(){
  cout<<"mySecond.f1()!"<<endl;
 }
   
    //覆盖基类需函数
 void f2(){
  cout<<"mySecond.f2()!"<<endl;
 }
};

int _tmain(int argc, _TCHAR* argv[])
{
 myFirst *mf = new myFirst(1);
 mySecond *ms = new mySecond(1);
 mf->f1();  //myFirst.f1()!
 mf->f2();  //myFirst.f2()!

 ms->f1();  //mySecond.f1()!
 ms->f2();  //mySecond.f2()!

 mf = ms;  //向上转型
 mf->f1(); //myFirst.f1()!
 mf->f2(); //mySecond.f2()!
 
 myFirst mf1(1);  //也可以
 mf1.f1();
 
 return 0;
}

=============================

java示例
//myCon.java

package com;

class myFirst{
    int value_myFirst;
    public myFirst(int f){
        value_myFirst = f;  
    }
    public void f1(){
        System.out.println("myFirst.f1()!");   
    }      
}


class mySecond extends myFirst{
    int value_mySecond;
    public mySecond(int s){       
        super(s); 
        value_mySecond = s;              
    }
    public void f1(){
        System.out.println("mySecond.f1()!");   
    }   
}

class myThird extends myFirst{
    int value_myThird;
    public myThird(int t){       
        super(t); 
        value_myThird = t;              
    }
    public void f1(){
        System.out.println("myThird.f1()!");   
    }    
}

public class myCon{
    public static void main(String[] args){
        myFirst mf = new myFirst(1);
        mySecond ms = new mySecond(1);
        myThird mt = new myThird(1);
               
        mf.f1();  //myFirst.f1()!            
        ms.f1();  //mySecond.f1()!     
        mt.f1();  //myThird.f1()!     
       
        //向上转型,由于java的动态绑定机制,
        //使得java能够调用派生类mySecond的f1()      
        mf = ms; 
        mf.f1();  //mySecond.f1()!
       
        mf = mt;
        mf.f1();  //myThird.f1()!     
              
    }
}

为了实现多态:
1.C#基类方法要声明为virtual,派生类覆盖时要用override;
2.C++基类方法要声明为virtual,派生类方法直接覆盖;
3.java直接覆盖就可以实现多态。

 


三、抽象类

C#示例
上面已经说明,虽然基类方法声明为virtual,以便派生类用override覆盖,但是派生类仍然可以用
new关键字覆盖(不具有多态性)。
可以强制让派生类覆盖基类的方法,将基类方法声明为抽象的,采用abstract关键字。
抽象方法没有方法体,由派生类来提供。

如果派生类不实现基类的抽象方法,则派生类也需要声明为abstract类

//myClass.cs

using System;
using System.Collections.Generic;
using System.Text;

namespace myClass{
   
    //类中只要存在抽象方法,就必须声明为抽象类
    abstract class myFirst 
    {
        int value_myFirst;
        public myFirst(int f)
        {
            value_myFirst = f;
        }
       
        //抽象方法没有方法体,以分号结尾。
        public abstract void f1();
       
        public void f2()
        {
            System.Console.WriteLine("myFirst.f2()!");
        }

        public virtual void f3()
        {
            System.Console.WriteLine("myFirst.f3()!");
        }
    }

    class mySecond : myFirst
    {
        int value_mySecond;

        public mySecond(int s)
            : base(s)
        {
            value_mySecond = s;
        }
       
        //覆盖基类抽象方法
        public override  void f1()  
        {
            System.Console.WriteLine("mySeconde.f1()!");
        }
        
        //覆盖基类一般方法    
        public new void f2()
        {
            System.Console.WriteLine("mySeconde.f2()!");
        }

        //覆盖基类虚拟方法
        public override void f3()
        {
            System.Console.WriteLine("mySecond.f3()!");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //抽象类和接口不能声明对象
            //myFirst mf = new myFirst(1); 
            mySecond ms = new mySecond(2);
           
            ms.f1();  //mySeconde.f1()!
            ms.f2();  //mySeconde.f2()!
            ms.f3();  //mySecond.f3()!

            //这里向上转型采用强类型转换的方式
            ((myFirst)ms).f1();   //mySeconde.f1()!
            ((myFirst)ms).f2();   //myFirst.f2()!
            ((myFirst)ms).f3();   //mySecond.f3()!
           
        }
    }
}

=============================

C++示例

纯虚函数是在基类中只宣布某个虚函数的原型,并且为了明确通知编译系统,
该虚函数在基类中不再定义具体操作代码,而在函数原型结束分号的左侧写
"=0"标识。这个不包含任何代码的虚函数被成为纯虚函数。

抽象类是含有纯虚函数的类,这种类不能声明任何对象,其作用就是为它的
派生类提供一种规定输入数据和返回类型接口的模板。

从抽象类派生的派生类,必须对基类的纯虚函数进行覆盖;否则编译系统将
报错。

基类中虚函数被派生类覆盖,则派生类对象调用的是派生类中重新定义的函
数代码。
基类中虚函数没有被派生类覆盖,则派生类对象调用的是基类中定义的函数
代码。
基类的纯虚函数在其派生类中必须被覆盖。

#include "stdafx.h"
#include <iostream>
using namespace std;

class myFirst{   //抽象类
private:
    int value_myFirst;
public:
    myFirst(int f){
        value_myFirst = f;  
    }

 void f1(){            //一般函数
  cout<<"myFirst.f1()!"<<endl;
 }
 virtual void  f2(){   //虚函数
  cout<<"myFirst.f2()!"<<endl;
 }

 virtual void f3()=0;  //纯虚函数
};

class mySecond : public myFirst{
private:
    int value_mySecond;
public:
    mySecond(int s) : myFirst(s){
        value_mySecond = s;      
    }

 void f1(){         //覆盖基类一般函数
  cout<<"mySecond.f1()!"<<endl;
 }

 void f2(){         //覆盖基类虚函数
  cout<<"mySecond.f2()!"<<endl;
 }
 void f3(){         //覆盖基类纯虚函数
  cout<<"mySecond.f3()!"<<endl;
 }
};

int _tmain(int argc, _TCHAR* argv[])
{
 //myFirst *mf = new myFirst(1);  //抽象类不能创建对象
 mySecond *ms = new mySecond(1); 

 ms->f1();  //mySecond.f1()!
 ms->f2();  //mySecond.f2()!
 ms->f3();  //mySecond.f3()!

    //向上转型采用强类型转换
 ((myFirst *)ms)->f1(); //myFirst.f1()!
 ((myFirst *)ms)->f2(); //mySecond.f2()!
 ((myFirst *)ms)->f3(); //mySecond.f3()!

 return 0;
}

=============================

java示例

java提供了抽象方法的机制abstract method,这种方法不完整,仅有声明
没有方法体
abstract void f();
包含抽象方法的类叫抽象类,如果类中包含一个或多个抽象方法,则该类必
须被声明为抽象类,用abstract来修饰抽象类。
如果从一个抽象类继承,并创建这个新类的对象,必须给抽象基类中所有抽
象方法提供方法定义,否则,派生类也是抽象类,也用abstract修饰。

package com;

abstract class myFirst{
    int value_myFirst;
    public myFirst(int f){
        value_myFirst = f;  
    }
    public void f1(){
        System.out.println("myFirst.f1()!");   
    }
    public abstract void f2();    //抽象方法  
}

//继承采用extends关键字
class mySecond extends myFirst{
    int value_mySecond;
    public mySecond(int s){
        //传递给基类构造函数时,采用super关键字,而且必须是第一条语句。
        super(s); 
        value_mySecond = s;              
    }
    public void f1(){
        System.out.println("mySecond.f1()!");   
    }
   
    public void f2(){  //覆盖基类抽象方法
        System.out.println("mySecond.f2()!");    
    }  
}

//如果不实现基类抽象方法,那么此派生类也必须用abstract修饰
abstract class myThird extends myFirst{
    int value_myThird;
    public myThird(int t){       
        super(t); 
        value_myThird = t;              
    }
    public void f1(){
        System.out.println("myThird.f1()!");   
    }    
}

public class myCon{
    public static void main(String[] args){
       
        //myFirst mf = new myFirst(1); //抽象函数不能创建对象
        mySecond ms = new mySecond(1);
        //myThird mt = new myThird(1);
       
        ms.f1();  //mySecond.f1()!
        ms.f2();  //mySecond.f2()!
       
        ((myFirst)ms).f1();  //mySecond.f1()!
        ((myFirst)ms).f2();  //mySecond.f2()!
    }
}


关于抽象方法和抽象类java和C#比较类似;
而C++叫纯虚函数和抽象类。


四、接口
C++中的没有接口的概念,它本身就可以多继承。

java中接口interface比抽象类abstract更进了一步,可看做"纯粹的抽象类"。
它允许创建者为一个类建立其形式,方法名,参数列表,返回类型,但没有
任何方法体。接口中也可以包含成员函数,但是他们都是隐含的public和
final。

创建接口时用interface来代替class,前面可以有public,如果不加访问权
限,那么它就是默认的包访问权限。
接口中的方法默认为public。

类实现接口要用implements关键字。

接口便于实现多重继承的效果,此处不作具体讨论。

package com;

interface myFirst{
    int value_myFirst=1;   
    public void f1();
}

class mySecond implements myFirst{
    int value_mySecond;
    public mySecond(int s){       
        value_mySecond = s;              
    }
    public void f1(){
        System.out.println("mySecond.f1()!");   
    }
}

public class myCon{
    static void play(myFirst mf){
        mf.f1();  
    }
    public static void main(String[] args){
       
       
        //myFirst mf = new myFirst(1);
        mySecond ms = new mySecond(1);
       
        ms.f1();   //mySecond.f1()!      
        play(ms);  //向上转型 mySecond.f1()!
       
        ((myFirst)ms).f1(); ////向上转型 mySecond.f1()!
    }
}

 
给STM32F103的7寸屏找个新UI:LVGL 8.2裸机移植保姆级教程(附避坑清单) 本文详细介绍了如何将LVGL 8.2裸机移植到STM32F103开发板,特别针对7寸大屏(800×480分辨率)进行优化配置。从环境准备、工程搭建到显示驱动移植、内存优化与性能调优,提供完整的解决方案和避坑清单,帮助开发者快速实现美观的用户界面。 阅读详情

相关推荐

Flutter for web 首次加载过慢问题优化

Flutter web 加载慢优化

Bright_TY的专栏 7834

JAVA C# C/C++之比教学:继承

一、C#的继承 (1)C#派生类只能有一个基类,也就是说不支持多重继承。但是可以实现多个接口。 (2)C#只存在public级别的继承。(3)继承中,父类的私有成员也被继承了,但是他们却不可以被访问namespace sandbox { class B { public B() { System.Console.WriteLi

define_us的专栏 607

原来Java中的继承和C#中的继承是不一样的

因为之前在学校里学的是Java,C#是自学的,一直感觉Java和C#就像是孪生兄弟,不过今天才发现原来Java中的继承和C#中的继承还是有点不一样的 在Java中子类继承父类的方法,如果在子类重新定义了父类方法的实现,那么这个过程就是重写,且只能是重写,而在C#中不一样,在C#中可以用virtual修饰函数,表示该函数是虚函数,而Java中是没有这个关键字的,所以问题就出现在这里了。请看示例 在

xiaxiaoying的专栏 2888

C语言 函数

一、什么是函数 二、函数的相关语法 三、函数编码规范

m0_57105760的博客 1890

关键词‖旋变传感器

旋转变压器(以下简称旋变)安装在永磁同步驱动电机的非传动端,其作用是检测转子的位置和速度。目前,通常采采用结构简单、坚固耐用、环境适应性好的磁阻式旋变作为位置传感器。

m0_72345077的博客 2144

【心得体会】c#与java继承的时候,对方法覆盖的不同处理

#9楼 回复 引用 我估计c#中存在一定程序的前期绑定(编译时绑定),而java是纯粹的后期绑定(运行时绑定)。所以在c#中如果一个方法不是虚方法,那么编译器会使用编译时类型来确定调用哪个方法,而对于虚方法,则要在运行时通过虚方法表来确定要调用的方法。而在java中所有的方法都在运行时确定。 比如c#中 sharp b = new circle(); b.delete();//2 输出:

javazhuanzai的专栏 301

Win10/Win11系统下冒险岛V128单机版一键搭建教程(含MySQL配置避坑指南)

本文提供Win10/Win11系统下冒险岛V128单机版一键搭建的详细教程,涵盖服务端部署、MySQL配置优化及常见问题解决方案。通过本指南,玩家可轻松实现单机版冒险岛的一键启动,重温经典游戏体验,同时避免常见的技术陷阱。

weixin_29261711的博客 647

C# C++ java中多态的罗列

关于C#,C++,Java在继承,覆盖和多态,抽象类等几个方面的比较归纳。关于C#,C++,Java在继承,覆盖和多态,抽象类等几个方面的比较归纳。 C#,C++用visual studio2005编译通过;java代码用JDK1.4.2编译通过。 一、继承中的带参数构造函数 ============================= C#示例: //myClass.cs usin

fantasyagain的专栏 804

使用HART Server PC软件进行HART设备的组态、调试和分析的完整指南

HART协议是一种用于工业自动化中的双向通信协议,能够在4-20mA模拟信号的基础上叠加数字信号,从而实现设备的远程监控和管理。HART协议兼具模拟和数字通信的优点,被广泛应用于过程控制系统中。设备组态:通过软件可以对HART设备进行组态,配置设备参数。设备调试:支持设备的在线调试和故障诊断,方便快速解决问题。数据分析:提供设备运行数据的实时监控和历史数据分析功能。报表生成:支持生成各类报表,便于数据记录和管理。

qq_38334677的博客 2468

vue2/3 - 详细实现内网使用离线高德地图功能,在vue中无需网络离线使用高德地图相关功能,高德地图如何离线加载详细教程(内网部署及使用),提供最新完整的瓦片资源下载及相关工具(示例代码,一键复制

vue,vue2,vue3,高德地图,离线使用高德地图,高德地图瓦片官方下载,vue内网使用高德地图离线无网络,断网情况下使用高德地图,vue离线高德地图教程,如何实现内网部署高德地图,无需联网离线使用,vue+ts实现离线高德地图 内网离线高德地图,如何在高德地图Vue项目中下载离线地图,高德离线地图加载不出来,高德地图离线使用不显示怎么办,怎么解决vue内网使用离线高德地图加载失败问题,vue实现离线地图+高德瓦片,vue引入高德离线地图,vue项目如何使用离线高德地图和自定义地图样式,高德离线地图的下

✅ 精选推荐文章 1万+

C++,C#,JAVA继承比较

关于C#,C++,Java在继承,覆盖和多态,抽象类等几个方面的比较归纳。 C#,C++用visual studio2005编译通过;java代码用JDK1.4.2编译通过。 一、继承中的带参数构造函数 ============================= C#示例: //myClass.cs using System; using System.Collections.G

嘴角那一抹阳光 496

海康visionmaster开发笔记10-集成HALCON第三方算子到VM工具箱的方法

海康visionmaster开发笔记10-HALCON第三方算子到VM工具箱的方法

视觉人机器视觉的博客 4346

LuffyX学习笔记3.1-面向对象编程

一、面向对象(Objected-Oriented) 与面向过程相对,过程式的编程方式,很难用程序来表示许多个体,个体有一些数据、动作,个体之间还有包含关系。 OOP三大特性,封装、继承、多态(Encapsulation、Inheritance、Polymorphisn) OOP里,所有的对象都应该有一个类。 OOP可扩展性高,复杂程度高 在面向对象领域最先取得辉煌成功的是C++语言。 Java向...

chenquandan的博客 201

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C语言系列-c,c++,c#,java关键字概述及解析

解释一点:个人认为C语言系列应该包括Java在内,尽管Java并不是c系系列语言。C语言关键字:一、C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。 1 数据类型关键字(12个):(1) char :声明字符型变量或函数 (2) double :声明双精度变量或函数 (3) enum :声明枚举类型 (4) float:声明浮

luoaijun12的博客 2352

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C#与java的区别(继承,接口实现,指针,编译后形式,异常处理几个方面比较区别)...

转载于:https://www.cnblogs.com/gzhbk/p/9655667.html

weixin_30823227的博客 155

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C#与Java 的区别

相同点:都是面向对象编程的语言,都能够实现面向对象的(封装,继承,多态)思想不同点:1.   c#中的命名空间是namespace类似于Java中的package(包),在Java中导入包用import而c#中用using。2.      c#和Java都是从main函数入口的,但是c#中的main函数的首字母必须大写3.      数据类型:Java跟c#基本都差不多,但是Java的String...

叁木大数据 2万+

C#和java区别

相同点: 都是面向对象编程的语言,都能够实现面向对象的(封装,继承,多态)思想 不同点: c#中的命名空间是namespace类似于Java中的package(包),在Java中导入包用import而c#中用using。 c#和Java都是从main函数入口的,但是c#中的main函数的首字母必须大写 数据类型:Java跟c#基本都差不多,但是Java的String类型的首字母必须大写,而c#中可以小写也可以大写,还有布尔型,Java中是boolean,c#中是bool。 变量的命

Abrahaml的博客 3105

选型笔记:Type‑C 扩展坞方案评估|DP1.4 转 HDMI2.0 桥接芯片 GSV2201S@ACP

本文记录 GSV2201S 这款 DP1.4a 转 HDMI2.0 桥接芯片评估,梳理视频、HDCP、PD 集成能力,总结 Type‑C 转接 Dongle、扩展坞方案的适配边界,以及差分走线、PD 时序、HDCP 握手等高频调试问题,为 C 口视频转接方案选型提供参考。

ACP广源盛的博客 216

ThunderKittens 深度解析:一个不基于 MLIR 的 C++ 模板 GPU DSL

Triton 是"让更多人能写 GPU kernel",ThunderKittens 是"让会写的人写得更爽"。前者用 MLIR 换易用性,后者用 C++ 模板换可控性。它们不是替代关系,而是覆盖了 GPU 编程光谱的两端。ThunderKittens 的出现,本质上是对"GPU DSL 必须基于 MLIR"这一默认假设的挑战。编译期类型系统本身就可以是一个强大的 DSL 基础设施,不需要中间 IR,不需要黑盒 pass,也能实现 tile 级抽象和零运行时开销。

Maxwell_Newton的博客 330

C++移动构造函数详解

移动构造函数是C++11引入的一种特殊构造函数,用于从临时对象(右值)"窃取"资源来初始化新对象,而不是进行昂贵的深拷贝。char* data;public:// 移动构造函数:参数是右值引用 &&// 关键:把源对象的资源置空。

拒绝AI文,努力在AI时代写出感动人心的好文章 385

[C++]:6.STL:vector

今天就要开始学vector容器,这节课我们主要学习vector中经常会用到的函数,并且给出该函数的模拟实现。话不多说,直接上干货。下面是本章的思维导图,那么,让我们开始吧!

2301_80817679的博客 136
上一篇: 再见微星
下一篇: 2006年回顾
rainlight
博客等级 码龄25年 11粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值