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

你可能感兴趣的文章
Linux上Java的安装与配置
查看>>
Laravel使用Carbon人性化显示时间
查看>>
我的友情链接
查看>>
SQL 2008 R2安装部署及端口开放
查看>>
oracle 日期函数总结
查看>>
11.11即将到来,华为云学院精品课程免费推荐奉上
查看>>
MAC OS 密码忘记 重置方法
查看>>
GNS3中支持的模块
查看>>
反垃圾邮件神器--开源邮件网关ScrolloutF1之一--安装及更新
查看>>
Centos6.8系统怎么解决“/boot”分区满了
查看>>
关于空指针的解决办法
查看>>
Myeclipse发布第一个jsp页面及web project部署到tomcat上的几种方法
查看>>
bzoj 2705: [SDOI2012]Longge的问题
查看>>
Eclipse中常用的快捷键
查看>>
华为交换机部分进程说明 dis cpu-usage
查看>>
Linux命令(19):ln命令
查看>>
Python里的OS模块常用函数说明
查看>>
sql:拼接字符串、截取字符串、取字符串长度
查看>>
mysql 主从复制
查看>>
php动态扩展bcmath与sockets库模块
查看>>