2017-03-24 79 views
-7

在JavaScript中,當我創建一個構造函數,我可以做這樣的事情:C++和JAVA功能

function func(name) { 
    this.name = name; 
} 
func.name = "func"; 
var a = new func("a"); 
alert(func.name); 
alert(a.name); 

兩個funcnew funcname原型。
如何在Java和C++中執行操作?
我知道,在Java中:

public class func { 
    String name; 
    public func(String text) { 
     name = text; 
    } 
} 
func a = new func("a"); 
System.out.println(a.name); 

,但如何做func.name,我如何做,在C++?
謝謝!

+0

你爲什麼要比較所有3? – Ravi

+5

第一步:不要在Java/C++中編寫JS。整個原型的東西在後兩種語言中不存在(至少不是內置語言元素) – deviantfan

+0

編寫Java時,請遵循Java編碼約定。 –

回答

0

部分答案:

,但如何做func.name

你不能這樣做,在Java中。你不能動態給一個類或方法命名。相同的C++。


並沒有特別的意思的名稱。我需要一些變數。 func.func如果你喜歡。

基本上相同的答案。

您不能在Java或C++中的類或方法(或函數)上動態設置任何屬性。

我想你可以聲明靜態變量,就像這樣:

public class Func { 
    static String fname; 
    String name; 
    public Func(String text) { 
     name = text; 
    } 
} 

Func a = new Func("a"); 
Func.fname = "funky"; 
System.out.println(a.name); 
System.out.println(Func.fname); 
+0

我並不是專指一個名字。我需要一些變數。 'func.func'如果你喜歡。 –

+0

@ZivSdeor同樣的交易。 – Quentin

1

我強烈建議您檢查您的這個Object oriented programming知識。

否則,您可以使用encapsulation訪問對象的領域,就這樣

#include <string> 
#include <iostream> 

class Func { 

    public: 
     Func(std::string text) : name(text) {} 

     std::string getName() 
     { 
      return name; 
     } 

    private: 
    std::string name; 
}; 


int main() { 

    Func f("func"); 
    std::cout << f.getName() << std::endl; 
}