物件導向程式設計 筆記 - 大二上期中考手寫筆試重點複習

筆記說明

此筆記用途在於台北科技大學資訊工程系大二上物件導向程式設計學重點整理
並非所有人都適用,部分對我而言稍加容易的內容並不會寫在此內。

makefile 用處如何,語法

輸入 make 指令,會尋找 ls 是否有 makefile 的文件,並編譯 makefile 文件進而自動化建構程式。

makefile 適合開發大型程式,根據 target、rule 來判斷那些程式需要重新編譯、哪些不需要,在編譯大型程式時,如果我們只改動一小部分卻要將所有程式整個編譯就會花費大量時間

  • # 是 makefile 中的註解
  • \ 是 makefile 中的換行
  • .PHONY 原先 make 會先確認當前是否有此命令資料夾,如果有就會認為已經執行過而不執行,而在 .PHONY 裡面則會強制他必須執行,不須確認是否有此資料夾

一個 makefile 的範例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.PHONY: directories clean stat 

all: directories bin/ut_all

bin/ut_all: test/ut_main.cpp test/ut_cat.h src/cat.h
g++ -std=c++11 test/ut_main.cpp -o bin/ut_all -lgtest -lpthread

directories:
mkdir -p bin

clean:
rm -rf bin

stat:
wc src/* test/*

Default Constructor 甚麼時機用,甚麼時候不用

  • Default Constructor 在使用時,會讓內部參數都是預設參數,如果使用者沒有進行預設那則使用系統預設
  • 如果使用者有建構 constructor 時,則系統就不會存在 default constructor
  • 可以使用 object() = delete 來把 deafault constructor 刪除

By Reference, By Value, Pointer 個別意思,如何區別,請舉例

  • point 與 ByReference 相同
    • pointer 可以隨時 assign,但 Reference 只能在初始化時 assign
    • pointer 可以設定 NULL,但 Reference 不可以
    • pointer 可使用 iterator
    • pointer 持有 memory,但 Reference 只是共享
    • pointer 需要用到 * 才可以讀取內部資料,但 Reference 不用
  • By Value 是複製一份資料進來,因此與先前的資料就完全不同

Copy assignment、copy constructor 個別意思,如何區別

  • Copy assignment 已被初始化後的物件複製其他 object
  • copy constructor 未被初始化的物件複製其他 object
  • object(a,b) copy constructor
  • object a = b; copy assignment

Function overloading 個別意思

  • 相同的 function name 但卻有不同的 parma
  • 函數可以相同,但參數不可以相同
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;

void print(int i) {
cout << " Here is int " << i << endl;
}
void print(double f) {
cout << " Here is float " << f << endl;
}
void print(char const *c) {
cout << " Here is char* " << c << endl;
}

int main() {
print(10);
print(10.10);
print("ten");
return 0;
}

參考連結

Passing by pointer Vs Passing by Reference in C++ by GeekforGeeks
[C/C++] 指標教學[四]: Pass by value vs Pass by reference by MuLong PuYang
What’s the difference between assignment operator and copy constructor by stackoverflow
Function Overloading in C++ by GeekforGeeks

  • 版權聲明: 本部落格所有文章除有特別聲明外,均採用 Apache License 2.0 許可協議。轉載請註明出處!
  • © 2020-2022 John Doe
  • Powered by Hexo Theme Ayer
  • PV: UV: