C#的new和CPP的new

简介: CSharp的new语句: Bus myBus = new Bus(2, 3, (float)250000.0); CPP的new语句: Bus* myBus = new Bus(2,3,250000.0); 本质上这两条语句是一样的,都是使用new来申请分配内存。

CSharp的new语句:

Bus myBus = new Bus(2, 3, (float)250000.0);

CPP的new语句:

Bus* myBus = new Bus(2,3,250000.0);

本质上这两条语句是一样的,都是使用new来申请分配内存。

CSharp new完成,将内存地址赋给引用myBus;CPP new完成,将内存地址赋给指针变量myBus。

 

下面两个代码案例分别示范CSharp和CPP继续有参数的基类、使用new关键字的用法:

CPP版本:

#include "stdafx.h"
#include
using namespace std;

class Vehicle
{
public:
    Vehicle(int width,int height)
    {
        this->Width = width;
        this->Height = height;
    }

    public:
    int Width;
    int Height;
};

class Bus : public Vehicle
{
public:
    Bus(int width,int height,float price):mSeatCount(5),Vehicle(width,height),MAX_SPEED(100)
    {
        this->Price = price;
    }

public:
    float Price;

private:   
    static const int SEQ_NUM = 0001; //只有静态常量整型数据成员才能在类中初始化
    int mSeatCount;
    const int MAX_SPEED;
};

int _tmain(int argc, _TCHAR* argv[])
{
    Bus* myBus = new Bus(2,3,250000.0);
    coutWidthHeightPrice    getchar();
    return 0;
}

}

CSharp版本:

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

namespace CSharpNewOperator
{
    public class Program
    {
        class Vehicle
        {
            public Vehicle(int width, int height)
            {
                this.Width = width;
                this.Height = height;
            }

            /* 公有成员每个都要挂上public,不然会被当成private处理 */
            public int Width;
            public int Height;
        };

        class Bus : Vehicle
        {
            public  Bus(int width,int height,float price) : base(width,height)
            {
                this.Price = price;
            }

            private
                    static  int SEQ_NUM = 0001; //不允许同时使用const static修饰一个整型变量
                    int mSeatCount = 7;
                    const int MAX_SPEED = 120;

                    public float Price = 25000;
        };

        static void Main(string[] args)
        {
            Bus myBus = new Bus(2, 3, (float)250000.0);
            Console.WriteLine("MyBus'Width={0},Height={1},Price={2}\n", myBus.Width, myBus.Height, myBus.Price);
            Console.ReadLine();
        }
    }
}

明显CPP在派生类的构造函数的初始化列表更为复杂些。

CPP在派生类的构造函数的初始化列表将专门探讨。

 

运行效果:

MyBus'Width=2,Height=3,Price=250000

 

参考网址:

http://bbs.csdn.net/topics/330151229

相关文章
|
Java 编译器 C#
C#中的override和new关键字
在 C# 中,派生类可以包含与基类方法同名的方法。 基类方法必须定义为 virtual。 如果派生类中的方法前面没有 new 或 override 关键字,则编译器将发出警告,该方法将有如存在 new 关键字一样执行操作。 如果派生类中的方法前面带有 new 关键字,则该方法被定义为独立于基类中的方法。 如果派生类中的方法前面带有 override 关键字,则派生类的对象将调用该方法,而不是调用基类方法。 可以从派生类中使用 base 关键字调用基类方法。
77 1
C#(二十二)之抽象方法 密封方法 base new 关键字
本篇内容记录了普通方法的隐藏(new)、base关键字、抽象类和抽象方法(abstract)、密封类和蜜蜂方法(sealed)的简单用法。
132 0
C#(二十二)之抽象方法 密封方法 base new 关键字