[精讚] [會員登入]
532

【C++】一些好用的C++小功能 —— 貳

承襲上一篇的C++小功能,筆記下來以免自己以後忘記了。

分享此文連結 //n.sfs.tw/14954

分享連結 【C++】一些好用的C++小功能 —— 貳@小編過路君子
(文章歡迎轉載,務必尊重版權註明連結來源)
2021-03-13 16:39:02 最後編修
2021-03-02 23:15:06 By 過路君子
 

哈囉大家好,這裡是筆記了一堆用不到程式的小編過路君子

怕哪天自己要用找不到,特此記錄下來,一些比較稀奇的用法

 

上一篇的筆記在這裡!基本上跟這一篇一樣!

大標題、完整程式碼、如果有輸出會附上輸出,基本上等於0的講解!

希望能在這些非常雜亂的文章裡面找到你所需要的小功能,就算不會用看過至少也有個C++能這樣寫的概念吧~

 

以指標的形式呼叫函數

#include<iostream>

using namespace std;

void out(int);
void add(int, int, void (*op)(int));	//一定要先宣告

int main()
{
	int a = 9, b = 6;
	add(a, b, out);
	
	return 0;
}

void add(int ui, int ux, void (*op)(int br))
{
	ui += ux;
	(*op)(ui);
}

void out(int xc)
{
	cout << xc;
}

輸出

15

 

呼叫被區域變數遮蔽的全域變數

#include<iostream>
#include<string>
using namespace std;

string apple("yummy!\n");

int main()
{
	string apple("yuck!\n");
	cout << "Apple is so " << apple;
	cout << "Umm...no, is so " << ::apple;
	return 0;
}

輸出

Apple is so yuck!
Umm...no, is so yummy!

 

建立區域靜態變數
~再次呼叫副程式時不會被初始化

#include<iostream>
using namespace std;

void call(void);

int main()
{
	for(int ui=0;4>ui;ui++) call();
	return 0;
}

void call(void)
{
	static int a = 0;
	cout << "Now number is " << a << '\n';
	a += 2;
}

輸出

Now number is 0
Now number is 2
Now number is 4
Now number is 6

 

函數重載和呼叫、初始化隱藏於class內成員

#include<iostream>
#include<string>
using namespace std;

class vov
{
private:
	string ui;
	int ux;

public:
	vov(string);
	void out(void);
	void out(int);
};

int main()
{
	vov Alice("Yale");	//函數初始化
	Alice.out();
	Alice.out(9);		//函數重載
	return 0;
}

vov::vov(string init)
{
	this->ui = init;
	this->ux = 6491;
}

void vov::out(void)
{
	cout << this->ui << ' ' << this->ux << '\n';
}

void vov::out(int add)
{
	this->ux += add;
	cout << this->ui << ' ' << this->ux << '\n';
}

輸出

Yale 6491
Yale 6500

 

使所有的class共用某項變數

#include<iostream>
using namespace std;

class test
{
public:
	static int ux;
};

int test::ux;	//一定要宣告!!! 

int main()
{
	test op;
	op.ux = 777;
	
	test some;	//宣告新的test物件
	cout << some.ux << '\n';
	//宣告於class內的static (type)可以想像是存在於這個class內的全域變數
	return 0;
}

輸出

777

 

class物件之間的轉換

#include<iostream>
#include<string>

using namespace std;

class reset
{
private:
	string game;
	int number;
	
public:
	reset(string);
	
	void SetNumber(int);
	
	operator int() const;
	operator string() const;
};

int main()
{
	reset kill("prayer");
	kill.SetNumber(777);
	
	int a = 23;
	a += kill;
	cout << a << '\n';

	string b = kill;
	cout << b << '\n';
	
	return 0;
}

reset::reset(string gameName)
{
	this->game = gameName;
	this->number = 0;
}

void reset::SetNumber(int num)
{
	this->number = num;
}

reset::operator int() const
{
	return this->number;
}

reset::operator string() const
{
	string information = "\'s game";
	return this->game + information;
}

輸出

800
prayer's game

 

建構複製運算子

#include<iostream>
using namespace std;
 
class reset
{
private:
    int *number;
     
public:
    reset(int *);
    reset(const reset *);	//複製建構子

	void out(void);   
};
 
int main()
{
	int *x = new int[5];
	for(int a=0, b=2;5>a;a++,b+=9) x[a] = b;
    reset *kill = new reset(x);
	delete [] x;

	reset pray(kill);
	delete kill;	//證明pray的number不是指向kill的number
	pray.out();
     
    return 0;
}
 
reset::reset(int *nums)
{
    this->number = new int[5];
	for(int a=0;5>a;a++) this->number[a] = nums[a];
}

reset::reset(const reset *oldReset)
{
	this->number = new int[5];
	for(int a=0;5>a;a++) this->number[a] = oldReset->number[a];
}

void reset::out(void)
{
	for(int a=0;5>a;a++) cout << this->number[a] << ' ';
}

輸出

2 11 20 29 38

 

END

你可能感興趣的文章

【教程】(進階版)如何用Sigil製作一本高質量的epub 下載好了Sigil之後除了直接把文字貼進去以外,還有:變更字型、著色、導入CSS……等等功能,不知道你有沒有發現呢?

【C++】使用SFML創建新視窗和新增圖標(ICON)並隱藏DOS 筆記,怕自己以後忘記怎麼創建並開啓一個新視窗

【Maven】如何開始撰寫 Minecraft PaperMC server插件 萬事起頭難,要開始寫一個插件最難的一步就是要怎麼開始寫

【Wickct】如何製作一個簡單的動態響應頁面和傳遞參數至其他頁面 身為一個後端架構程式,這個功能當然是非常重要之一

【Discord bot】(ERROR)await self.bot.wait_for() 大坑 今天真的是採到大坑,只找到解決方法,具體原因不明

【Maven】如何創建一個簡單可部屬的WAR檔 滿重要的一個大功能,在使用JAVA網頁伺服器的時候一定會需要這個WAR檔來進行部屬

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

【手遊介紹】小品手遊─寶箱是我的!(SUMMONER'S GREED) 輕鬆無腦的塔防遊戲,殺時間本小編推薦的遊戲之一

希萌創意預計在今年7月繼東津萌米之後再次推出新遊戲--食用性少女! 今天來介紹希萌創意的心企劃案,來讓大家知道這個消息!讓大家的錢包君一起來減肥吧!Ψ(☆w☆)

高捷少女:小穹與果仁巧克力㊤ 阿敏突然輕笑一聲,從櫃臺拿來一個塑膠餐盒,打開給大家看。「這是小穹烤的餅乾,妳們吃吃看就知道她為什麼不想講了。」小穹變得緊張起來。「阿敏,妳怎麼還留著呀?」艾米莉亞、婕兒與耐耐各自拿了一塊,把夾著奶油

高捷少女:小穹與果仁巧克力㊥ 艾咪臉上泛起笑容說:「妳知道嗎?就跟花語一樣,每一種巧克力也都有各自的涵義:薄荷巧克力代表初戀;卡通巧克力代表天真爛漫;而果仁巧克力代表的是窩心,還有想陪伴對方的心情,這在德國是女生之間在慶生時會彼此

高捷少女:美麗島的守護者④ 光之穹頂的某處垃圾桶底,一個四方形的機器持續發出聲音,機器的儀表板上顯示著「1:25:10」的字樣,外表被一層鞭炮所掩蓋。儀表板的數字每秒不斷減少,細微的嗶嗶聲也隨著數字的改變發出,但在熙來攘往的美麗