「効果的なC ++」(2)

ここに画像の説明を挿入します

序文

今日は兄貴たちと集まって、たくさんの新しいことに触れました。
今日はこのシリーズを終わらせるために努力しています。最近、情報が少し多すぎて分析できません。まず、ゆっくり送ってください。
しばらくお待ちください。しばらくお待ちください。

次に、大きな動きがあります。


13、スマートポインター

あまり言いませんが、直接使ってください。

18.インターフェースを正しく使用しやすくし、誤用しにくいものにします

途中で波を飛ばしたのですが、理由もなく、わかりません。

この句は「テンプレートメソッドパターン」を思い出させますが、このパターンの使用方法、使用方法、またはその有用性がわかりません。今、私は別の使用法を知っています。

私が作成した最初の小さなデモを見てください。これは、入出力制御機能です。
このデモは私の教育活動でも広く使用されています。最後に提出された回答はあまり理想的ではありませんが、興味のある友人は自分でそれを実装できると言わせてください。

1、语言不限,最好是C/C++,Python封装的太好了,体现不出我们的水平
2、输入一个字符串
3、我要控制输入的为纯英文
4、我要控制输入的为纯数字
5、我要控制输入的可以有英文、数字、标点混搭
6、基于以上3/4/5,我要控制输入长度一定
7、我输错了要支持回删
8、我要密文输入,不能在屏幕上显示我输入的是什么

これはテンプレートであり、間違った入力はカウントされません。
画面に行を書くようなものです。英語と数字を入力してください。それでも何気なく入力できます。句読点をたくさん入力して、入力が不正であると教えてくれます。どうしましたか?違法な私が入ることを許可しますか?


22.メンバー変数をプライベートとして宣言する

私はいつもこれをします。
それでおしまい。


23.メンバー関数を非メンバーおよび非フレンドに置き換えます

以前は何が起こっているのかわからなかったし、先生はとても大変な努力をしていると感じましたが、今ではわかりました。これはテンプレートメソッドパターンです。カプセル化を保護するため。

仮定:

class A{
    
    
public:
	a();
	b();
	c();
}

解決策を解決するには、シーンクラスにある場合はabcを順番に呼び出す必要があります。

A *AA = new A();
AA->a();
AA->b();
AA->c();

まだです

class A{
    
    
public:
	run(){
    
    
		a();
		b();
		c();
	}
}

int main(){
    
    
	AA->run();
}

どう思いますか?


26.変数定義の出現を可能な限り遅らせる

いくつかの本やチュートリアルでは、プログラミング仕様とプログラミングアートを装って、関数の最初に変数定義が書かれていることがわかります。これはC言語の場合です。そうしないと、次の変数がリソースを割り当てることができず、エラーが発生します。しかし、C ++はそのようなものではありません。

関数内にブランチがあると、一部のオブジェクトがシーンにまったく表示されない可能性があることを明確にする必要があります。なぜそんなに急いで定義するのですか?

変数の定義が含まれると、それが使用されているかどうかに関係なく、構築と分析のコストが発生します。

変数の定義を可能な限り延期するだけでなく、変数に値を割り当てることができるようになるまで延期することをお勧めします。


もちろん、特定の状況は詳細に分析されます。ループで一時変数に遭遇した場合、それは別の問題です。

ループには、ループの外側の定義とループの内側の定義の2つ以下の状況があります。

11个构造函数+一个析构函数+n个赋值操作
2、n个构造函数+n个析构函数

割り当てのコストが建設+破壊のコストよりも小さい場合(変数が大きくない場合)、最初の方法を選択します。
現時点では、経験次第です。


27.変換を最小限に抑えるようにしてください

それがあなた自身の変換操作である場合は、実行を減らし、実行しないようにしてください。
コンパイラやプラットフォームが異なるため、お互いを認識できない場合があります。


31.ファイル間のコンパイルの依存関係を最小限に抑える

使いたければ使わないといけないのですが、どうすれば減らすことができますか?いっぱいになりたくなく、不要なヘッダーファイルを引用することは何もしません。


ここに行く

おすすめ

転載: blog.csdn.net/qq_43762191/article/details/115033379