顯示具有 函式 標籤的文章。 顯示所有文章
顯示具有 函式 標籤的文章。 顯示所有文章

2010年6月28日 星期一

JAVA筆記-Overriding覆寫和Overloading多載

英文長得很像,常常不小心搞混

Overloading
多載,在相同類別中,定義名稱相同,但引數個數不同或引數型態不同的函式

Overriding
覆寫,子類別繼承父類別,但是改寫父類別的方法,方法的名稱、引數和型態都必須相同
##ShowAll##

2010年2月6日 星期六

C/C++筆記-inline 將函式直接放到主程式

當程式碼很小時,在函式宣告加入inline的特性
編譯器會將函式直接放到主程式,而不會使用呼叫的方式
可加快速度,但會多占用記憶體
在類別中宣告的函式會自動加入inline

//inline用在函式程式碼少,執行效率較高
inline int square(int value)
{
  return(value*value)
}

##ShowAll##

2009年11月13日 星期五

JAVA筆記-vararg變長參數,利用省略號傳多個參數

利用省略號...傳多個參數,也是把參數自動轉成陣列
public int calc(int...c){
  int sum = 0;
  for(int i:c)
    sum+=i;
  return sum ;
}

/*使用時可傳多個參數*/
int a = new calc(1,2);
int b = new calc(1,2,3,4);
int c = new calc(a,b);
##ShowAll##

JAVA筆記-關於static成員

static只能用在類別裡,
不能使用在方法之內,
方法內也不能再定義方法

類別內,static不可呼叫non-static,只可呼叫static,
non-static則都可,
因static不需要被建立就可執行,
亦即static成員中根本沒有隱含的this參考指標指向物件,
但non-static卻未被建立,必須先new出來才可用
public class Test {
  void a() {
    b(); //正確
    d(); //正確
  }
  void b() {}
  static void c() {
    b(); //錯誤,不可直接呼叫b()
    d(); //正確,可直接呼叫d()
  }
  static void d(){
    new Test().b(); //正確,可直接呼叫b()
  }
}

2009年9月25日 星期五

JAVA筆記-for-each多維陣列輸出

##ShowAll##
String[][] exams = {{"SCJP","SCWCD","SCMAD"},{"MCSD","MCAD","MCDBA"}};
for(String[] ex : exams)
{
  for(String e : ex)
  {
    System.out.print(e + ", ");
  }
}

JAVA筆記-label函式標籤

##ShowAll##
//有點像goto,但此方法似乎不會破壞程式結構
OuterLoop:
for( ; ; )
{
  InnerLoop:
  for( ; ; )
  {
    continue OuterLoop; //跳到OuterLoop標籤的函式
    break OuterLoop; //跳出OuterLoop標籤的函式
  }
}

JAVA筆記-final關鍵字使用

用final修飾過的類別(class)不能被繼承
函式(method)不能被重載,在C++加上const的函式意指回傳值不能被改變
變數不能被更改,意指常數,等於一般C++的const變數
在JAVA內,通常定義常數方法是static final PI = 3.1412;

2009年9月24日 星期四

C/C++筆記-函式預設參數

void draw(const int width, const int height, double scale=1.0);
...
//---> 以下兩呼叫函式是相等的
draw(3, 5, 1.0); //採用尺度比例
draw(3, 5,); //採用預設比例
##ShowAll##

2009年9月23日 星期三

C/C++筆記-const參數與函式

//i1、i2在函式中是const變數,不能改變值
const int& min(const int& i1, const int& i2)
{
  if(i1 < i2)
    return (i1);
  return (i2);
}
int main()
{
  min(1+2, 3+4);
  return 0;
}
/*
 * const的函式意義是指,若函式是傳回參考指標變數,
 * 則該變數傳回後不能直接變更回傳值
 * min(1+2,3+4)=0;由於是const函式,傳回值不能作改變
 */
##ShowAll##

C/C++筆記-將變數傳遞進參考指標函式

//好處是傳一般變數即可
void inc_counter(int& counter)
{
  ++counter;
}
int main()
{
  int a_count = 0;
  inc_counter(a_count);
  std::cout << a_count << '\n' ; //傳回值+1   return 0; } /* 這種作法似乎不能用在C語言 */
##ShowAll##

2009年8月15日 星期六

C/C++筆記-函數的指標

函數也在記憶體中,所以指標也可以指向函數

int add(int,int);
int add(int,int);
int main(void)
{
  int ans, (*p)(int x, int y); //宣告函數指標p
  p = add; //將p指向函數add
  ans = (*p)(3,4) //間接呼叫add函數
  printf("%d",ans);
}

void add(int x,int y)
{
  returb x+y;
}
##ShowAll##

C/C++筆記-將指標傳遞進函式

void func(int*,int);

int main(void)
{
  int x=0,*p;
  p = &x;
  func(p,3); //Call-by-Reference
  printf("x = %d",x);
}

void func(int *p,int y)
{
  *p = y;
}
##ShowAll##

C/C++言筆記-將陣列傳遞進函式

void func(int a[])
{
  int temp = a[1];
}

int main(void)
{
  int a[2]={3,6};
  func(a);
}
/*
 * 若是多維陣列,第一個陣列要給予數字才能索引
 * int a[10][10]; 合法
 * int a[10][]; 合法
 * int a[][]; 不合法
 */
##ShowAll##
/