日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

用java写秋道程序_Java开发者使用C++写程序踩的坑

發布時間:2025/3/15 c/c++ 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用java写秋道程序_Java开发者使用C++写程序踩的坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

筆者是一個很矛盾的人。平時用Java。但是一開始學習的時候學的是匯編語言,而且對C語言也很熟悉。為什么不學C++呢?是因為我可以完全用Java的編碼規范去寫C++。因此我不需要了解更多的諸如C++的命名空間,操作符重構,友元函數,多繼承這些更復雜的特性。

雖然C++介于Java和C之間,我并不需要學C++(開發用Java,腳本用ruby,python,JavaScript)、但是作為一個計算機從業人員。不了解C++有點說不過去。

首先我先總結這次我學習C++的特性:(參考資料:菜鳥教程)

一、using namespace std

第一個讓我疑惑的是using namespace std;

話說回來這個是什么意思?

當我對比了下Java文件的命名規范(類名=文件名.java),我就懂了。

使用Java開發的人都明白一個道理、當你import 一個類的時候,Java 的包名.類名的文件定義,而且一切皆對象,會使你不會遇到諸如C++名稱空間的這種錯誤。

例如你在頭文件中定義一個函數,這個函數如果被別人又定義了,在編譯時會報錯的。因此C++語言加了個命名空間的語言特性。

有的同學可能問了,如果函數名重復了話,可以重構啊,。。。但是要是參數都一樣呢?

所以C++會用這種方式,定義了一個解決問題的方法。

下面是別人總結的。

命名空間(namespace)是一種描述邏輯分組的機制,可以將按某些標準在邏輯上屬于同一個集團的聲明放在同一個命名空間中。

原來C++標識符的作用域分成三級:代碼塊({……},如復合語句和函數體)、類和全局。現在,在其中的類和全局之間,標準C++又添加了命名空間這一個作用域級別。

命名空間可以是全局的,也可以位于另一個命名空間之中,但是不能位于類和代碼塊中。所以,在命名空間中聲明的名稱(標識符),默認具有外部鏈接特性(除非它引用了常量)。

在所有命名空間之外,還存在一個全局命名空間,它對應于文件級的聲明域。因此,在命名空間機制中,原來的全局變量,現在被認為位于全局命名空間中。

標準C++庫(不包括標準C庫)中所包含的所有內容(包括常量、變量、結構、類和函數等)都被定義在命名空間std(standard標準)中了。

std又是什么呢? std是頭文件中的一個命名空間。包含了cin cout endl等函數。

using 指的是用這個命名空間的函數。

具體使用如下:

#include

using namespacestd;//first name space

namespacefirst_space{voidfunc(){

cout<< "Inside first_space" <

}

}//second name space

namespacesecond_space{voidfunc(){

cout<< "Inside second_space" <

}

}intmain () {//Calls function from first name space.

first_space::func();//Calls function from second name space.

second_space::func();return 0;

}

二、類Class的定義

C++除了支持C語言中的結構體struct外,還支持class。

C語言中的struct里面不能放方法、但是C++可以。

很多時候class和struct的差別其實不大。好像在默認訪問權限和繼承方式有所不同,其余的我也沒看到什么新特征。

不過C++與Java的區別在于C++可以在定義類之后,在其他地方定義方法。這個在Java里面是不行的。Java不可以這樣。(別跟我說重載)

具體的實現如下:

#include

using namespacestd;classBox

{public:double length; //長度

double breadth; //寬度

double height; //高度

};intmain( )

{

Box Box1;//聲明 Box1,類型為 Box

Box Box2; //聲明 Box2,類型為 Box

double volume = 0.0; //用于存儲體積//box 1 詳述

Box1.height = 5.0;

Box1.length= 6.0;

Box1.breadth= 7.0;//box 2 詳述

Box2.height = 10.0;

Box2.length= 12.0;

Box2.breadth= 13.0;//box 1 的體積

volume = Box1.height * Box1.length *Box1.breadth;

cout<< "Box1 的體積:" << volume <

volume = Box2.height * Box2.length *Box2.breadth;

cout<< "Box2 的體積:" << volume <

}

同時,類的繼承和Java也有區別,他這個居然直接+:就好了,,,呵呵呵

在派生類(繼承類)中的使用如下

#include

using namespacestd;//基類

classShape

{public:void setWidth(intw)

{

width=w;

}void setHeight(inth)

{

height=h;

}protected:intwidth;intheight;

};//派生類

class Rectangle: publicShape

{public:intgetArea()

{return (width *height);

}

};int main(void)

{

Rectangle Rect;

Rect.setWidth(5);

Rect.setHeight(7);//輸出對象的面積

cout << "Total area:" << Rect.getArea() <

}

還有關于多態的問題,和Java差不多。這個我沒有特別細究。應該沒什么區別吧。。

多態的示例程序如下:

#include

using namespacestd;classShape {protected:intwidth, height;public:

Shape(int a=0, int b=0)

{

width=a;

height=b;

}intarea()

{

cout<< "Parent class area :" <

}

};class Rectangle: publicShape{public:

Rectangle(int a=0, int b=0):Shape(a, b) { }intarea ()

{

cout<< "Rectangle class area :" <

}

};class Triangle: publicShape{public:

Triangle(int a=0, int b=0):Shape(a, b) { }intarea ()

{

cout<< "Triangle class area :" <

}

};//程序的主函數

intmain( )

{

Shape*shape;

Rectangle rec(10,7);

Triangle tri(10,5);//存儲矩形的地址

shape = &rec;//調用矩形的求面積函數 area

shape->area();//存儲三角形的地址

shape = &tri;//調用三角形的求面積函數 area

shape->area();return 0;

}

Java的抽象函數和接口在C++里面也有體現

對應的叫虛函數。

虛函數?是在基類中使用關鍵字?virtual?聲明的函數。在派生類中重新定義基類中定義的虛函數時,會告訴編譯器不要靜態鏈接到該函數。

我們想要的是在程序中任意點可以根據所調用的對象類型來選擇調用的函數,這種操作被稱為動態鏈接,或后期綁定。

classShape {protected:intwidth, height;public:

Shape(int a=0, int b=0)

{

width=a;

height=b;

}//pure virtual function

virtual int area() = 0;

};

然后子類繼承后,就順利的重載。

接口的話,就是完完全全的那種純虛函數。

像這種的

classBox

{public://純虛函數

virtual double getVolume() = 0;private:double length; //長度

double breadth; //寬度

double height; //高度

};

三、模板

在Java里面沒有模板的概念。那個叫泛型。在集合類,容器類等等應用十分廣泛。但是C++這里不知道為啥又叫模板又叫泛型。。管他呢反正都是一個東西。

定義的如下

template ret-type func-name(parameter list)

{//函數的主體

}

具體的實現如下

#include #include

using namespacestd;

templateinline Tconst& Max (T const& a, T const&b)

{return a < b ?b:a;

}intmain ()

{int i = 39;int j = 20;

cout<< "Max(i, j):" << Max(i, j) <

cout<< "Max(f1, f2):" << Max(f1, f2) <

cout<< "Max(s1, s2):" << Max(s1, s2) <

}

這樣就實現了類似于Java中的集合類的方法。

四、操作符的重載

重載這個我是真感覺C++太自由了。

也許C++本就不是為工程而設計的。

而是為一群真正的計算機愛好者定制的。

Java除了String 貌似別的都不行。哈哈

重載的運算符是帶有特殊名稱的函數,函數名是由關鍵字 operator 和其后要重載的運算符符號構成的。與其他函數一樣,重載運算符有一個返回類型和一個參數列表。

像這樣:

#include

using namespacestd;classBox

{public:double getVolume(void)

{return length * breadth *height;

}void setLength( doublelen )

{

length=len;

}void setBreadth( doublebre )

{

breadth=bre;

}void setHeight( doublehei )

{

height=hei;

}//重載 + 運算符,用于把兩個 Box 對象相加

Box operator+(const Box&b)

{

Box box;

box.length= this->length +b.length;

box.breadth= this->breadth +b.breadth;

box.height= this->height +b.height;returnbox;

}private:double length; //長度

double breadth; //寬度

double height; //高度

};//程序的主函數

intmain( )

{

Box Box1;//聲明 Box1,類型為 Box

Box Box2; //聲明 Box2,類型為 Box

Box Box3; //聲明 Box3,類型為 Box

double volume = 0.0; //把體積存儲在該變量中//Box1 詳述

Box1.setLength(6.0);

Box1.setBreadth(7.0);

Box1.setHeight(5.0);//Box2 詳述

Box2.setLength(12.0);

Box2.setBreadth(13.0);

Box2.setHeight(10.0);//Box1 的體積

volume =Box1.getVolume();

cout<< "Volume of Box1 :" << volume <

volume =Box2.getVolume();

cout<< "Volume of Box2 :" << volume <

Box3 = Box1 +Box2;//Box3 的體積

volume =Box3.getVolume();

cout<< "Volume of Box3 :" << volume <

}

總結

我真心覺得很多學生說C++難不是因為C++真的難,而是這種高自由的語法,很難讓一個初學者學生去掌握。對于學生來說最好先規范計算機的思維然后再學習C++,同時推薦大家去學Java。找工作簡單,語言簡單。

而要說精通C++我覺得至少要把GCC 或者Clang 都學個精通才算精通吧。畢竟語言的使用只是語言的一部分。

總結

以上是生活随笔為你收集整理的用java写秋道程序_Java开发者使用C++写程序踩的坑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕超清在线观看 | 欧美激情黑白配 | 午夜爱爱网站 | 天天综合网在线 | 欧美18av| 国产外围在线 | 国产亚洲精品久久 | 夜夜高潮夜夜爽 | 免费av毛片| 啪啪网站免费 | av嫩草| 视频一区日韩 | 欧美乱子伦 | 中文字幕精品无 | 亚洲一区二区激情 | 手机在线不卡av | 99精品视频在线 | 亚洲精品视屏 | 久久久噜噜噜久久久 | 成人免费看 | 国产探花视频在线观看 | 亚洲国产成人精品视频 | 又色又爽又黄gif动态图 | 黄色小视频在线免费观看 | 麻豆性生活 | 性chinese天美传媒麻 | 国产jjizz一区二区三区视频 | 精品99久久久久成人网站免费 | 一级久久久久久 | 在线观看中文字幕 | 午夜精产品一区二区在线观看的 | 亚洲国产一区二区a毛片 | 美国少妇在线观看免费 | 在线天堂www在线国语对白 | 国产又粗又大又爽 | 日日日日干 | 无码一区二区波多野结衣播放搜索 | 激情丁香| 免费看久久 | 视频在线观看一区二区 | 极度诱惑香港电影完整 | 六月丁香在线视频 | 国语对白真实视频播放 | www.嫩草.com | 粉嫩av一区二区三区四区五区 | 一区二区国产精品视频 | 国产高清精品一区 | 黄色伊人 | yjizz国产| 久久成人乱码欧美精品一区二区 | 日韩一区二区三区精 | 麻豆黄色网址 | 熟女精品一区二区三区 | 天天躁日日躁狠狠躁av麻豆男男 | 亚洲成人高清在线 | 大伊人久久| 综合久久亚洲 | 老妇裸体性猛交视频 | 久久亚洲AV成人无码国产野外 | 最新国产精品 | 国产乱码精品一区二区三区忘忧草 | 免费观看黄色一级片 | 国产一区二区三区在线免费观看 | 26uuu国产精品视频 | 欧美一区二区三区在线播放 | 亚洲婷婷小说 | 欧美激情一级精品国产 | 人妖性生活视频 | 久久精品视屏 | 国产极品美女在线 | 日本精品视频在线观看 | 久操综合 | 91麻豆精品国产理伦片在线观看 | 欧美性猛交xxxx免费看久久久 | 91桃色在线观看 | 日韩精品欧美在线 | 中文字幕2018 | 亚洲狼人av | 国产高潮国产高潮久久久91 | av最新网址 | 国产一区二区久久精品 | 无码av天堂一区二区三区 | 日本免费无人高清 | 国产成人精品在线播放 | 在线a视频 | 国产午夜精品一区二区三区 | 99精品久久 | 日韩视频在线观看一区二区三区 | 亚洲理论在线 | 爱av导航 | 国产又猛又黄又爽 | 日韩欧美成人免费视频 | 宅男噜噜噜 | 亚洲视频精品在线观看 | 日韩精品久久久久久久酒店 | 午夜伦伦 | 91精品国产一区二区三竹菊影视 | 精品二区在线 | 精品+无码+在线观看 |