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

你可能感兴趣的文章
Javascript - ExtJs - 整合百度文章编辑器
查看>>
JS分两种数据类型,你都知道吗?
查看>>
Bash条件判断
查看>>
JSF 2.0 + Ajax hello world example
查看>>
Firefox 插件 FlashGot 创建 Axel 下载任务
查看>>
php中相对路径和绝对路径如何使用(详解)
查看>>
Oracle 数据库、实例、用户、表空间、表之间的关系
查看>>
RVM 多版本Ruby管理-Gentoo
查看>>
android error: Apostrophe not preceded by \
查看>>
小程序-scroll-view下拉事件请求多次接口
查看>>
AngularJs 指令
查看>>
云适配正则笔记
查看>>
开始学习silverlight
查看>>
php使用递归计算目录大小
查看>>
EF 直接修改数据,不再查询数据库
查看>>
script标签加载js代码的一些知识
查看>>
The builder launch configuration could not be found
查看>>
linux 安装软件的地方
查看>>
bond网卡绑定(centos6.5 + centos 7)
查看>>
Leetcode-Letter Combinations of a Phone Number
查看>>