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

你可能感兴趣的文章
Zabbix监控屏幕全屏显示多个监控项
查看>>
windows 实验报告
查看>>
$POST 、$HTTP_RAW_POST_DATA、php://input三者之间的区别
查看>>
SQL SERVER 2008 自动备份图解教程
查看>>
Docker分离部署LNMP
查看>>
Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web mod
查看>>
oracle忘记system密码修改方法
查看>>
spring事务注解
查看>>
oracle 10g 导出数据库
查看>>
鸡蛋学运维-7:mysql服务安装配置
查看>>
我的友情链接
查看>>
Java语言的编译方式
查看>>
Linux之网络基础TCP/IP以及网络属性配置
查看>>
iOS中的正则表达式[转]
查看>>
异步消息处理机制Handler
查看>>
一时失误的权限设计
查看>>
我的友情链接
查看>>
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 在页面中的调用讲解
查看>>
bat批处理更改hosts文件以及增加受信任站点
查看>>
Apache Shiro学习笔记(五)Web集成使用JdbcRealm
查看>>