博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(原創) C++若參考到的class在其他檔案,須手動#include,C#則不必 (C/C++) (.NET) (C#)...
阅读量:6699 次
发布时间:2019-06-25

本文共 1699 字,大约阅读时间需要 5 分钟。

Abstract

對C++ Programer來說,這是一個很白痴的標題,但對C# Programmer來說,卻是不同的感受...

Introduction

我們來看看C++和C#的寫法
C++ / Class1.cpp

 1
ExpandedBlockStart.gif
ContractedBlock.gif
/**/
/* 
 2InBlock.gif(C) OOMusou 2006 http://oomusou.cnblogs.com
 3InBlock.gif
 4InBlock.gifFilename    : Main.cpp / Class1.cpp
 5InBlock.gifCompiler    : Visual C++ 8.0 / ISO C++
 6InBlock.gifDescription : Demo the difference between C++ and C#
 7InBlock.gifRelease     : 01/13/2007 1.0
 8ExpandedBlockEnd.gif*/
 9
ExpandedBlockStart.gifContractedBlock.gif
class
 Class1 
dot.gif
{
10InBlock.gifpublic:
11InBlock.gif  int x;
12ExpandedSubBlockStart.gifContractedSubBlock.gif  Class1() : x(0dot.gif{};
13ExpandedBlockEnd.gif}
;

Main.cpp

 1
ExpandedBlockStart.gif
ContractedBlock.gif
/**/
/*
 
 2
InBlock.gif(C) OOMusou 2006 
http://oomusou.cnblogs.com
 3
InBlock.gif
 4
InBlock.gifFilename    : Main.cpp / Class1.cpp
 5
InBlock.gifCompiler    : Visual C++ 8.0 / ISO C++
 6
InBlock.gifDescription : Demo the difference between C++ and C#
 7
InBlock.gifRelease     : 01/13/2007 1.0
 8
ExpandedBlockEnd.gif
*/
 9
None.gif#include 
<
iostream
>
10
None.gif#include 
"
Class1.cpp
"
11
None.gif
12
None.gif
using
 
namespace
 std;
13
None.gif
14
ExpandedBlockStart.gifContractedBlock.gif
int
 main() 
dot.gif
{
15InBlock.gif  Class1 obj1;
16InBlock.gif
17InBlock.gif  cout << obj1.x << endl;
18ExpandedBlockEnd.gif}

C#
Class1.cs

 1
ExpandedBlockStart.gif
ContractedBlock.gif
/**/
/* 
 2InBlock.gif(C) OOMusou 2006 http://oomusou.cnblogs.com
 3InBlock.gif
 4InBlock.gifFilename    : Main.cs / Class1.cs
 5InBlock.gifCompiler    : Visual Studio 2005 / C# 2.0
 6InBlock.gifDescription : Demo the difference between C++ and C#
 7InBlock.gifRelease     : 01/13/2007 1.0
 8ExpandedBlockEnd.gif*/
 9
ExpandedBlockStart.gifContractedBlock.gif
class
 Class1 
dot.gif
{
10InBlock.gif  public int x;
11ExpandedBlockEnd.gif}

Main.cs

 1
ExpandedBlockStart.gif
ContractedBlock.gif
/**/
/*
 
 2
InBlock.gif(C) OOMusou 2006 
http://oomusou.cnblogs.com
 3
InBlock.gif
 4
InBlock.gifFilename    : Main.cs / Class1.cs
 5
InBlock.gifCompiler    : Visual Studio 2005 / C# 2.0
 6
InBlock.gifDescription : Demo the difference between C++ and C#
 7
InBlock.gifRelease     : 01/13/2007 1.0
 8
ExpandedBlockEnd.gif
*/
 9
None.gif
using
 System;
10
None.gif
11
ExpandedBlockStart.gifContractedBlock.gif
class
 MainClass 
dot.gif
{
12ExpandedSubBlockStart.gifContractedSubBlock.gif  public static void Main() dot.gif{
13InBlock.gif    Class1 obj1 = new Class1();
14InBlock.gif
15InBlock.gif    Console.WriteLine(obj1.x);
16ExpandedSubBlockEnd.gif  }
17ExpandedBlockEnd.gif}

執行結果

None.gif
0
None.gif請按任意鍵繼續 . . .

在C++中,若class在其他檔案,要用到該class的程式必須手動加上#include "filename.cpp",但C#卻不必,只要在同一個project中,C#自動就抓的到,或許C# compiler背後自動幫你加上#include,但不管如何,C#省掉了這個步驟。

除此之外,我們還看到由於C++繼承了C語言,built-in type如int並沒有預設值,所以得在constructor加上initializer list對int加上初始值,但C#卻不必,這算是C++的一大包袱。

Conclusion

C#的確是大幅簡化了C++在語法上的複雜度。

转载地址:http://qhgoo.baihongyu.com/

你可能感兴趣的文章
深入浅出node(3) 异步I/O
查看>>
iOS,plist文件、pch文件,工程设置,小知识点
查看>>
CentOS7配置IP和网络问题排查
查看>>
java Multiple Contexts have a path of ""
查看>>
MVC2.0中的HtmlHelper大全
查看>>
《面向模式的软件体系结构3-资源管理模式》读书笔记(1)--- Lookup模式
查看>>
You must configure either the server or JDBC driver (via the serverTimezone configuration property
查看>>
扩展方法判断序列(或集合)是否包含元素
查看>>
Sql Server Profiler跟踪死锁
查看>>
使用反射操作私有(Private)方法和属性
查看>>
第二阶段团队冲刺站立会议10
查看>>
php 的rabbitmq 扩展模块amqp安装
查看>>
APK签名校验绕过
查看>>
[LeetCode] 4Sum
查看>>
让最新官方编译的 ffmpeg 在 XP 上 跑起来
查看>>
庆祝博客开通
查看>>
地址栏中传递中文参数
查看>>
设计模式之结构型模式
查看>>
冒泡,快排
查看>>
git: fatal: Could not read from remote repository
查看>>