C ++プログラミングクラスの包括的な演習

ルーバンも大工の祖先になる前に絶え間ない練習をしたように。


主人は3番目の質問を提起しました。「2人の見習いは技術を学び、山を下り、主人はそれぞれに斧を与えました。大きな見習いは斧を使って黄金の山を稼ぎ、2人の見習いは斧を使いました。人々の心を刻むために。名前。どの見習いから学びたいですか?」ルー・バンはすぐに「2番目の見習いから学びたい」と答えました。マスターは笑いました。
マスターは言った:「まあ、あなたはすべての答えを正しく得ました、そして私はあなたを受け入れなければなりません。しかし私から芸術を学ぶためにあなたは私の男を使わなければなりません。しかしこの男、私は500年間あなたに電話していません、あなたそれはそれを修正してください。」
ル・バンは木箱で男を取り出して見ていた。斧が壊れ、飛行機はノミを折り曲げてはげた、草に覆われた、そしてクリーンアップする時間でした。彼は袖をまくり上げて砥石で研ぎました。彼は昼と夜に挽くので、腕が痛くなり、手が膨らみ、高くて厚い砥石が三日月のように削られます。七日夜を経て、斧を研ぎ、飛行機を磨き、ノミを研ぎ、一枚一枚光沢がありました。彼はそれを一人ずつ主人に見せたが、主人はうなずいた。
マスターは、「研いだ斧を試してみてください。ドアの前にある大きな木を切り倒してください。その大きな木は500年もの間成長しました。」
ルバンは斧を上げて木の下を歩きました。この大きな木はとても太くて、何人かの人がそれを握ることができません。私が見上げると、それは空に到達しようとしていました。彼は斧を手に取り、切り倒し続け、大きな木を12日と12夜切り倒しました。
ルバンは斧を持って家に入って主人に会いました。マスターは、「研いだ飛行機を試してみてください。まず、斧を使ってこの大きな木を大きな木に切り、次に飛行機を使って計画を立てます。バリが残らないように滑らかにする必要があります。 15の月のように。」
LuBanは振り返り、斧と飛行機をドアに持って行った。彼は大きな木の枝を斧で次々と切り落とし、幹の結び目を次々と計画しました。12日と12夜の後、彼は大きな木の計画を立てました。それは丸くて軽い必要があります。
ルバンは斧と飛行機を家に持ち込み、主人に会いました。マスターは言った:「あなたが研いだノミを試してみてください。あなたは大きな翡翠に二千四百の目を彫ります:六百四方、六百丸、六百愚か、六百平ら。」
公輸盤はノミと斧を手に取り、ダズの側に来てノミを彫りました。彼は片方の目ともう片方の目を彫り、おがくずが飛び交うのを見ました。完全な12日と12夜がカットされ、2,400の目がカットされました:600平方、600ラウンド、600千鳥、600フラット。
公輸盤は主人に会うためにノミと斧を持ってきました。先生は笑い、公輸盤を称賛し、「いい子、職人技を全部教えてあげるよ!」と話し終えた後、公輸盤をウェスティングハウスに連れて行った。ウェスティングハウスには多くのモデルがあり、塔、パビリオン、橋と塔、テーブル、椅子、箱、キャビネットがあり、どれもとても絶妙でした。先生は笑顔で「これらのモデルを分解してから取り付け直します。各モデルを分解して再設置する必要があります。自分の集中力で職人技を学びます」と
語った。公輸盤はこれを手に取ってもう一方を見ましたが、置くのをためらっていました。彼はモデルを1つずつ手に持って裏返し、それを見て、各ピースを3回慎重に分解し、3回取り付けました。私は毎日食べたり寝たりすることを気にしません。マスターが朝に彼に会いに来たとき、彼は考えていました;彼が夜に彼に会いに来たとき、彼はまだ考えていました。マスターは彼に眠るように促しました、しかし彼は何気なく同意しました、しかし彼の手にモデルを置きませんでした。
公輸盤は3年間一生懸命勉強し、すべての工芸品を学びました。マスターはまた彼を試し、すべてのモデルを破壊し、彼に再作成させます。彼の記憶に基づいて、彼は各作品をオリジナルとまったく同じにした。マスターはまた、彼が構築するための多くの新しいモデルを提案しました。彼は熟考しながらそれをしました、そして結果はすべてマスターが言った方法で作られました。マスターはとても満足しています。
..。

私の仕事では、C ++の多くの機能や文法が使用されていないため、他の人のプロジェクトを引き継ぐときにつまずきます。そこで、ここでは、C ++レベルを向上させるためのほとんどの機能を含むプロジェクトを作成します。

これは非常に完全な要約です...
C ++研究の概要
もプロジェクトUMLです。

これは私の大学の授業での先生のオープンブックのテストペーパーのコードで、それからそれは密かに写真に撮られてタイプされました。内部の関連カテゴリの知識はより鋭く、手放します。

#include <iostream>
using namespace std;

//Y类开始=================================================
class Y {
    
    
public:
	Y();
	Y(int j);
	Y(const Y&);
	Y& operator = (const Y&);
	virtual ~Y();
	virtual int GetValue() = 0;
	static unsigned NY() {
    
     return nY; }
private:
	int j;
	static unsigned nY;
};

unsigned Y::nY = 0;
Y::Y() {
    
    
	cout << "default constructor of Y " << endl;
	j = 0;
	++nY;
}

Y::Y(int j) {
    
    
	cout << "regular constructor of Y" << endl;
	this->j = j;
	++nY;
}

Y::Y(const Y& y) {
    
    
	cout << "copy constructor of Y " << endl;
	j = y.j;
	++nY;
}

Y& Y::operator=(const Y& y) {
    
    
	cout << "assignment operator of Y" << endl;
	j = y.j;
	return *this;
}

Y::~Y() {
    
     cout << "destructon of Y" << endl; }

//X类,继承Y类=============================================
class X : public Y {
    
    
public:
	X();
	X(int i);
	X(const X&);
	X& operator=(const X&);
	~X();
	virtual int GetValue() {
    
     return k; }
	static unsigned NX() {
    
     return nX; }
private:
	int k;
	static unsigned nX;
};

unsigned X::nX = 0;
X::X() {
    
    
	cout << "default constructor of X" << endl;
	k = 0;
	++nX;
}

X::X(int i) :Y(i) {
    
    
	cout << "regular constructor of X" << endl;
	k = i;
	++nX;
}

X::X(const X& x) {
    
    
	cout << "copy constructor of X" << endl;
	k = x.k;
	++nX;
}

X& X::operator=(const X& x) {
    
    
	cout << "assignment operaton of X" << endl;
	k = x.k;
	return *this;
}

X::~X() {
    
     cout << "destructor of x" << endl; }

X userCode(X b)
{
    
    
	X c = b;
	return c;
}

//main函数开始==================================================
int main() {
    
    
	cout << "Beginning: Y::NY()=" << Y::NY() << endl;
	cout << "Beginning: X::NX()=" << X::NX() << endl;
	X a(3);
	cout << "calling userCode()" << endl;
	X d;
	d = userCode(a);
	cout << "back to main()" << endl;
	cout << "d.GetValue()" << d.GetValue() << endl;

	Y*e = new X(7);
	cout << "e->GetValue()=" << e->GetValue() << endl;
	cout << "before deleting e Y::NY() = " << Y::NY() << endl;
	cout << "before deleting e X::NX() = " << X::NX() << endl;
	delete e;
	cout << "before ending: Y::NY()" << Y::NY() << endl;
	cout << "before ending: X::NX()" << X::NX() << endl;
	return 0;
}

おすすめ

転載: blog.csdn.net/sinat_27382047/article/details/102641855