博客
关于我
强烈建议你试试无所不能的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/

你可能感兴趣的文章
[原创]关于easyui下datagrid表格控件分页控制(非url方式)
查看>>
数值优化 - 牛顿法
查看>>
python编码问题总结
查看>>
DateTimeUtil 工具类,android 和 java 通用
查看>>
Flipkart: 携手 Android Go 拥抱印度市场
查看>>
【模板】杜教筛(Sum)
查看>>
9月5 号作业管理信息系统
查看>>
a标签中有img有时候会把a撑过大
查看>>
数据库分库分表思路
查看>>
查看 FormData 中已存在的值
查看>>
shell浅谈之三for、while、until循环【转】
查看>>
嵌入式Linux下Camera编程--V4L2【转】
查看>>
算法(Algorithms)第4版 练习 1.3.25 1.3.24
查看>>
(三)Controller接口控制器详解(一)
查看>>
0328复利软件4.0测试
查看>>
git 回滚操作
查看>>
背包问题初探
查看>>
野生前端的数据结构基础练习(4)——字典
查看>>
***UML类图几种关系的总结
查看>>
【BZOJ 1056 1862】排名系统
查看>>