前スレ
C++相談室 part158
https://mevius.5ch.net/test/read.cgi/tech/1636969758/
C++相談室 part159
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2022/02/19(土) 11:56:42.14ID:kSnJ/KwP181デフォルトの名無しさん
2022/02/24(木) 19:04:00.53ID:7WoYZRJz 3次元配列なら
template<class T>
class V{
T*const ptr;
size_t s1,s2,s3;
public:
V(size_t s1,size_t s2,size_t s3):
s1(s1),s2(s2),s3(s3),
ptr(new T[s1*s2*s3]){}
T&operator()(size_t i1,size_t i2,size_t i3){
return ptr[i1*s2*s3+i2*s3*i3];
}
~V(){delete[]ptr;}
};
V<int> v(4,5,6);
v(1,2,3)=42;
みたいのでええんか?
大体こういうの自分で作るとバグらせるからあんまやりたくないけど
template<class T>
class V{
T*const ptr;
size_t s1,s2,s3;
public:
V(size_t s1,size_t s2,size_t s3):
s1(s1),s2(s2),s3(s3),
ptr(new T[s1*s2*s3]){}
T&operator()(size_t i1,size_t i2,size_t i3){
return ptr[i1*s2*s3+i2*s3*i3];
}
~V(){delete[]ptr;}
};
V<int> v(4,5,6);
v(1,2,3)=42;
みたいのでええんか?
大体こういうの自分で作るとバグらせるからあんまやりたくないけど
182デフォルトの名無しさん
2022/02/24(木) 19:07:44.67ID:cGpWV2sd すでにバグってる気がする
183デフォルトの名無しさん
2022/02/24(木) 20:00:57.06ID:1pzXIXf6 boostにあるけどオーバーエンジニアリングっぽいんだよな
184デフォルトの名無しさん
2022/02/24(木) 20:30:12.93ID:cGpWV2sd 馬鹿にされたい馬鹿が小出しにしてる以上何とも言えないw
僕ちゃんboost使いたかったけど馬鹿だからよく分からないし、条件小出しなまま複数IDで汎用な答えが欲しいのぉって言ってるだけなのが透けて見えるw
僕ちゃんboost使いたかったけど馬鹿だからよく分からないし、条件小出しなまま複数IDで汎用な答えが欲しいのぉって言ってるだけなのが透けて見えるw
185デフォルトの名無しさん
2022/02/24(木) 20:38:21.09ID:I6df84hq 何の情報が必要かすら分かってない初心者かもしれないんだから聞き出してやればいいのに
煽って出てくると思ってるなら考え甘いぞ、要件引き出せないようじゃ半人前
煽って出てくると思ってるなら考え甘いぞ、要件引き出せないようじゃ半人前
186デフォルトの名無しさん
2022/02/24(木) 20:59:04.53ID:cGpWV2sd ちゃんとID変えて出てきてるし煽ってないし、僕ちゃん答えは欲しいのに分不相応なプライドだけ高くて素直になれないのぉって言われてもね
187デフォルトの名無しさん
2022/02/24(木) 21:02:22.10ID:j0njw0Fu 一方すぐ質問者にマウンティングしたがるおまえはすぐわかるなw
188デフォルトの名無しさん
2022/02/24(木) 21:03:10.18ID:MBzpszCI > ID:cGpWV2sd
おまえイラネ
無駄にうるせえ
おまえイラネ
無駄にうるせえ
189デフォルトの名無しさん
2022/02/24(木) 21:29:39.55ID:cGpWV2sd こんなスレにいちいち相談する初心者なんてそうそういねーよ
もし初心者なら回答欲しいんだから何言われても何某か返事する
そういうのがなく単発IDなどが煽ってくるということはつまり・・・図星ってことw
もし初心者なら回答欲しいんだから何言われても何某か返事する
そういうのがなく単発IDなどが煽ってくるということはつまり・・・図星ってことw
190デフォルトの名無しさん
2022/02/24(木) 21:36:30.68ID:j0njw0Fu ここ覗いてるのって技術系の雑談ネタとしか思ってないだろうが、
毎回、単発IDで質問して逃げてるとしたらクソ野郎だな。
学生の課題か何かだろう。おれたちは利用されてるんだ!!!
毎回、単発IDで質問して逃げてるとしたらクソ野郎だな。
学生の課題か何かだろう。おれたちは利用されてるんだ!!!
191デフォルトの名無しさん
2022/02/24(木) 21:50:54.34ID:p3uXF2gK 利用されるのが嫌ってこと?よくわからんが。
まぁ、学校の課題でズルしても本人のためにはならないんだから勝手にしとけって感じだな。
まぁ、学校の課題でズルしても本人のためにはならないんだから勝手にしとけって感じだな。
192デフォルトの名無しさん
2022/02/24(木) 21:59:42.81ID:cGpWV2sd193デフォルトの名無しさん
2022/02/24(木) 23:03:53.08ID:I6df84hq 妄想えっぐ、糖質っぽいな
194デフォルトの名無しさん
2022/02/25(金) 00:16:50.60ID:5F5cVQmS 在日君なんだろうな
195デフォルトの名無しさん
2022/02/25(金) 01:06:42.45ID:xX3MCg4u >>192
おれみたいなじーさんがおまえのような小便垂れの小僧に質問するわけないだろ…
おれみたいなじーさんがおまえのような小便垂れの小僧に質問するわけないだろ…
196デフォルトの名無しさん
2022/02/25(金) 11:25:19.29ID:xlKD2LUb なんで const なオブジェクトは const なメンバ関数しか呼べないの?
197デフォルトの名無しさん
2022/02/25(金) 11:29:01.84ID:uD2ZWt4n メンバ関数でメンバ変数が書き変わるとconstオブジェクトとして困るから
198デフォルトの名無しさん
2022/02/25(金) 11:29:09.22ID:KX/JNmq+ 中が書き換わるかもしれないから
199デフォルトの名無しさん
2022/02/25(金) 11:59:24.66ID:169sj97j でもポインタで簡単に書き換えられるじゃん
200デフォルトの名無しさん
2022/02/25(金) 12:14:57.98ID:mK/IikxE 意図的にconst外さなきゃconstのままだよ
何も考えずconst外すバカのことなんて知らん
何も考えずconst外すバカのことなんて知らん
201デフォルトの名無しさん
2022/02/25(金) 18:43:59.10ID:xX3MCg4u constが役にたった場面にあったことがない。
自分で書き換えといて「書き換わるかもしれない!!」とかどんだけ適当にコード書いてんだか。
自分で書き換えといて「書き換わるかもしれない!!」とかどんだけ適当にコード書いてんだか。
202デフォルトの名無しさん
2022/02/25(金) 19:05:22.20ID:kxjR7eze constは積極的に使うことでI/Fを分かりやすくしたりできるね
書き換えない想定を明示的にして最適化しやすくする効果もある
意味的に正しいことが保証できないときにconstを使うと泣くこともあるけどw
書き換えない想定を明示的にして最適化しやすくする効果もある
意味的に正しいことが保証できないときにconstを使うと泣くこともあるけどw
203デフォルトの名無しさん
2022/02/25(金) 19:11:03.22ID:xX3MCg4u >>202
const使ったらコンパイラはどういった最適化するんだ?
const使ったらコンパイラはどういった最適化するんだ?
204デフォルトの名無しさん
2022/02/25(金) 19:12:37.70ID:pF12AA3R constとprivateはテストの邪魔でしかない
使ってる奴は例外なく低脳
使ってる奴は例外なく低脳
205デフォルトの名無しさん
2022/02/25(金) 19:27:49.01ID:RMWkUPMB privateはインテリセンスがすっきりしていいじゃん
206デフォルトの名無しさん
2022/02/25(金) 19:38:04.25ID:kxjR7eze207デフォルトの名無しさん
2022/02/25(金) 19:43:16.35ID:xX3MCg4u 自分で言い出しといて急にキレられてもな。
208デフォルトの名無しさん
2022/02/25(金) 19:48:21.44ID:kxjR7eze >>207
キレる?お前が調べもせずに聞いてくるから当たり前のことを言っただけだが
キレる?お前が調べもせずに聞いてくるから当たり前のことを言っただけだが
209デフォルトの名無しさん
2022/02/25(金) 19:52:14.27ID:pF12AA3R >>206
エアプは君だよ
製品レベルの緻密なテストセットをきちんと書き上げるためにはconstなしのオールpublicしかあり得ん
テストケースで様々な状態を作りだして動作確認するためには、全てを必要に応じて自由に書き換えられることが不可欠というもの
書き換え不可だのクラス専用だのの決め事は命名規則で担保するんだぞ
エアプは君だよ
製品レベルの緻密なテストセットをきちんと書き上げるためにはconstなしのオールpublicしかあり得ん
テストケースで様々な状態を作りだして動作確認するためには、全てを必要に応じて自由に書き換えられることが不可欠というもの
書き換え不可だのクラス専用だのの決め事は命名規則で担保するんだぞ
210デフォルトの名無しさん
2022/02/25(金) 19:58:35.87ID:46L8HXzx IFのシグネチャにconstついてないといちいち仕様書読まなきゃいけないから面倒くね?
char* token(char* str)とかあったら破壊的かどうか判別できん
char* token(char* str)とかあったら破壊的かどうか判別できん
211デフォルトの名無しさん
2022/02/25(金) 20:00:20.50ID:gDL/lDyA >>209
struct最強伝説キタコレ
struct最強伝説キタコレ
212デフォルトの名無しさん
2022/02/25(金) 20:04:09.41ID:Ttq2k6xT >>211
staticおじさんの生まれ変わりだろw
staticおじさんの生まれ変わりだろw
213デフォルトの名無しさん
2022/02/25(金) 20:04:09.42ID:kxjR7eze214デフォルトの名無しさん
2022/02/25(金) 20:07:48.92ID:xX3MCg4u const使ったらどんな最適化するんだろう? 言った本人はキレて答えてくれないし。
215デフォルトの名無しさん
2022/02/25(金) 20:12:00.77ID:kxjR7eze216デフォルトの名無しさん
2022/02/25(金) 20:14:10.16ID:aDhOSI3t Rustは何も指定しないとimmutable(不変)にしちゃったから、そういう点でもわかりやすく、かつ、テストやデバッグも少数のmutableなものだけ対象にすればよくなってるね
217デフォルトの名無しさん
2022/02/25(金) 20:15:39.58ID:xX3MCg4u218デフォルトの名無しさん
2022/02/25(金) 20:16:05.93ID:kxjR7eze >>216
Rustは無関係なので巣に帰れ
Rustは無関係なので巣に帰れ
219デフォルトの名無しさん
2022/02/25(金) 20:32:18.12ID:6k09Uwld constを使うのがいいことがよく分かった
220デフォルトの名無しさん
2022/02/25(金) 20:39:24.80ID:xX3MCg4u constウイルスと言わざるをえないアホ仕様
221デフォルトの名無しさん
2022/02/25(金) 20:57:38.37ID:QBj91W6D だからさ、釣り針が太すぎるんだよな
222デフォルトの名無しさん
2022/02/25(金) 21:25:13.93ID:4EL5U7Bc constついてないコードは九分九厘ごみ
絶対に自分一人で書き上げて絶対に一生涯外に出さない保証があるなら付けなくても良い
絶対に自分一人で書き上げて絶対に一生涯外に出さない保証があるなら付けなくても良い
223デフォルトの名無しさん
2022/02/25(金) 21:34:50.33ID:6k09Uwld 本に載るほどの支持を覆すほどの権威と実例があるわけもなく
224デフォルトの名無しさん
2022/02/25(金) 22:44:59.40ID:RMWkUPMB メンバ関数のconst修飾とか関数の引数のconstとかはわかるけど関数内部のローカル変数にconst付けるのはよくわからんな
225デフォルトの名無しさん
2022/02/25(金) 22:51:54.69ID:a/ksSb5+ const お会いしたらお茶しませんか?
226デフォルトの名無しさん
2022/02/25(金) 23:04:47.69ID:aDhOSI3t227デフォルトの名無しさん
2022/02/25(金) 23:07:46.96ID:vOr560R7 ここ数年constをつけて再代入しないのが当然になってますってjavascriptの専門家に言われて殴りたくなりました
228デフォルトの名無しさん
2022/02/25(金) 23:13:07.22ID:aDhOSI3t JavaScript程度はブラウザのカスタマイズしたり含めて誰でも使える言語だろ
まさかC++しか使えない新人かね
まさかC++しか使えない新人かね
229デフォルトの名無しさん
2022/02/26(土) 00:15:34.77ID:VmHIkvc0 Pythonにはconstもprivateもない
大文字だけの名前はconst、アンダースコア始まりの名前はprivateという規約があるだけ
でもそれでみんな勝手に書き換えるべきでないと了解されてて完全に成立してる
とはいえ言語機能ではないのでテストとかでの必要に応じて規約を無視して値を変えることもできる
こういう実例を見るとわざわざコンパイラ機能として書き換え禁を強要してるconstやprivateは偏執的過ぎると思う
大文字だけの名前はconst、アンダースコア始まりの名前はprivateという規約があるだけ
でもそれでみんな勝手に書き換えるべきでないと了解されてて完全に成立してる
とはいえ言語機能ではないのでテストとかでの必要に応じて規約を無視して値を変えることもできる
こういう実例を見るとわざわざコンパイラ機能として書き換え禁を強要してるconstやprivateは偏執的過ぎると思う
230デフォルトの名無しさん
2022/02/26(土) 00:23:17.69ID:xDf2Ellb 小さいオブジェクトにconst付けるとアドレスが割り振られて最適化が阻害されるみたいな話は聞いたな
231デフォルトの名無しさん
2022/02/26(土) 01:13:30.79ID:fRC8OZTs232デフォルトの名無しさん
2022/02/26(土) 01:14:41.41ID:TNmFLFGs ここまでconstつけると最適化されるという例はなし。
233デフォルトの名無しさん
2022/02/26(土) 01:39:20.96ID:fRC8OZTs ここまで何を調べたかの記述なしw
234デフォルトの名無しさん
2022/02/26(土) 04:01:53.50ID:L9ZaKHY5 move、右辺値参照、各種オペレータなどフルセットで対応するライブラリ的なクラスならconst対応した方が良いけど、
末端のアプリケーションにまで全部律儀にconst付けるのは面倒くさいだけだわな
末端のアプリケーションにまで全部律儀にconst付けるのは面倒くさいだけだわな
235デフォルトの名無しさん
2022/02/26(土) 04:13:27.79ID:fRC8OZTs そんなしょうもないものならわざわざC++で組むなよw 発想がアホの極みw
236デフォルトの名無しさん
2022/02/26(土) 06:30:02.19ID:BX4iLvdt Rustなどは無指定デフォルト時がC++でのconst状態になってるよな
楽でいいよな
楽でいいよな
237デフォルトの名無しさん
2022/02/26(土) 07:05:16.24ID:fRC8OZTs >>236
Rustの話はRustスレで
Rustの話はRustスレで
238デフォルトの名無しさん
2022/02/26(土) 08:03:06.09ID:w5NWCXyu 話題に沿ってるんだし少しくらいなら良いと思うけどね。アレルギーかよ
239デフォルトの名無しさん
2022/02/26(土) 08:11:23.88ID:fRC8OZTs Goスレ見てると対岸の火事とは思えないw
Rustスレは静かなのに、そこで議論できない馬鹿がずっと他言語スレでRustのヘイトを稼いでるからなw
Rustくらいみんな知ってると言うのにw
ってわけで、特に今は各言語固有スレではその言語の話だけってことw
Rustスレは静かなのに、そこで議論できない馬鹿がずっと他言語スレでRustのヘイトを稼いでるからなw
Rustくらいみんな知ってると言うのにw
ってわけで、特に今は各言語固有スレではその言語の話だけってことw
240デフォルトの名無しさん
2022/02/26(土) 10:47:22.97ID:w5NWCXyu 他所のスレのことは知らんけどこれをヘイト稼ぎと受け取るのは捻くれな気がするけどね
Rustのことも自分が知ってるからってみんな知ってるとかイキるのも良くない
知らない人だって当然いるだろうに
Rustのことも自分が知ってるからってみんな知ってるとかイキるのも良くない
知らない人だって当然いるだろうに
241デフォルトの名無しさん
2022/02/26(土) 11:00:37.71ID:fRC8OZTs ヘイト稼ぎと解釈しない方が捻くれてるだろw
今どきC++やっててRust(やそれ以外の言語)知らん方がレアだし、その程度のやつは何を言われても仕方ない
今どきC++やっててRust(やそれ以外の言語)知らん方がレアだし、その程度のやつは何を言われても仕方ない
242デフォルトの名無しさん
2022/02/26(土) 11:24:01.42ID:Cjy1TnYX その程度とか言い出した
パソコンの大先生かな?w
パソコンの大先生かな?w
243デフォルトの名無しさん
2022/02/26(土) 11:56:13.77ID:w5NWCXyu 誰でも最初は初心者なんだけどね
ここオンラインの匿名掲示板なの忘れてない?
勝手に自分基準のレベルを周りに押し付けられてもね
そういうのは自分の納得できる閉じたコミュニティでやればいいと思う
ここオンラインの匿名掲示板なの忘れてない?
勝手に自分基準のレベルを周りに押し付けられてもね
そういうのは自分の納得できる閉じたコミュニティでやればいいと思う
244デフォルトの名無しさん
2022/02/26(土) 13:03:43.12ID:d8NXRVNx いや、悪いけど>>241はレベル低いと思うよ・・・w
245デフォルトの名無しさん
2022/02/26(土) 13:14:24.08ID:qsPBexON 自動販売機のタバコじゃないんだけどね
もっと高級なのね
もっと高級なのね
246デフォルトの名無しさん
2022/02/26(土) 15:44:44.33ID:xDf2Ellb Rustってまだ言語マニアくらいしか使ってなくね
そもそも案件が少なすぎるしRsutでしか提供されていないライブラリやフレームワークやSDKなんて聞いたことないし
俺が知らないだけで実はコッソリ出現してるのか???
そもそも案件が少なすぎるしRsutでしか提供されていないライブラリやフレームワークやSDKなんて聞いたことないし
俺が知らないだけで実はコッソリ出現してるのか???
247デフォルトの名無しさん
2022/02/26(土) 22:06:22.23ID:aW9KNPN/ 実際こうやってアレルギー反応(スレが荒れる)起こすからよその話はよそでやれってことだな
248デフォルトの名無しさん
2022/02/26(土) 22:11:54.75ID:fRC8OZTs 荒れてねーよw
249デフォルトの名無しさん
2022/02/26(土) 22:19:40.75ID:4mZJSMD8 >>246
色んな分野でRustがC++の立ち位置を侵食していってるよ
例えばブラウザ内だけでなく今は色んな所で使われるようになったWebAssembly(WASM)
WASMでプログラミングするための記述言語は当初C++が先行していたけど今はRustが逆転してトップになっているね
色んな分野でRustがC++の立ち位置を侵食していってるよ
例えばブラウザ内だけでなく今は色んな所で使われるようになったWebAssembly(WASM)
WASMでプログラミングするための記述言語は当初C++が先行していたけど今はRustが逆転してトップになっているね
250デフォルトの名無しさん
2022/02/26(土) 22:27:10.15ID:I1qWxMaG constさいこー
固定文字列リテラルとか
const char* const s = "Hello World!\n";
やし
関数の仮引数は関数内で絶対変えないことにして
void foo(const char* const p); // 宣言
void foo(const char* const p_) { // 定義
const char* p = p_; // 関数内で値を変える場合
}
と書いてしまうま
固定文字列リテラルとか
const char* const s = "Hello World!\n";
やし
関数の仮引数は関数内で絶対変えないことにして
void foo(const char* const p); // 宣言
void foo(const char* const p_) { // 定義
const char* p = p_; // 関数内で値を変える場合
}
と書いてしまうま
251デフォルトの名無しさん
2022/02/26(土) 22:27:29.83ID:I1qWxMaG252デフォルトの名無しさん
2022/02/26(土) 22:46:27.37ID:I1qWxMaG テストのときにprivateメンバを弄りたいケースは確かにあって
そういう場合は次のどれかかが多いう気がする印象だが知らん ※個人の感想です
1. 長ったらしい接頭辞がついた名前のテスト用メソッドを設けてその中にテストコードを書く
リリースコードでもそのままだが呼ばれないからリンクはされない
2. 長ったらしい接頭辞がついた名前の構造体として実装して細かいテストしてclassでwrapしてリリース
3. 長ったらしい接頭辞がついた名前の普通の関数として書いて細かいテストしてそれをclassから呼ぶ
そういう場合は次のどれかかが多いう気がする印象だが知らん ※個人の感想です
1. 長ったらしい接頭辞がついた名前のテスト用メソッドを設けてその中にテストコードを書く
リリースコードでもそのままだが呼ばれないからリンクはされない
2. 長ったらしい接頭辞がついた名前の構造体として実装して細かいテストしてclassでwrapしてリリース
3. 長ったらしい接頭辞がついた名前の普通の関数として書いて細かいテストしてそれをclassから呼ぶ
253デフォルトの名無しさん
2022/02/26(土) 22:47:36.31ID:fRC8OZTs >>249-251 こういうのが荒れてる状態
254デフォルトの名無しさん
2022/02/26(土) 22:48:11.64ID:fRC8OZTs >>252 これもな
255デフォルトの名無しさん
2022/02/26(土) 23:14:01.86ID:I1qWxMaG だいたいインターフェースにもconstつけちゃう
class IFoo {
int bar(const int x, const double y, const RECT z) const = 0;
double baz(std::string& buf) const = 0;
/*...*/
};
とか
class IFoo {
int bar(const int x, const double y, const RECT z) const = 0;
double baz(std::string& buf) const = 0;
/*...*/
};
とか
256デフォルトの名無しさん
2022/02/26(土) 23:14:57.75ID:I1qWxMaG virtuarl ~IFoo() { }
を忘れたorz (死
を忘れたorz (死
257デフォルトの名無しさん
2022/02/26(土) 23:17:36.73ID:TNmFLFGs 値渡しをconstにして何がしたいん?
258デフォルトの名無しさん
2022/02/26(土) 23:27:30.26ID:w5NWCXyu 固定ならconstexpr使おうや
259デフォルトの名無しさん
2022/02/26(土) 23:36:20.44ID:I1qWxMaG260デフォルトの名無しさん
2022/02/26(土) 23:43:30.97ID:w5NWCXyu まあ非参照型でconstついてなかったらとりあえず
ひょっとして関数内で書き換えられるんかと疑ってかかるよね
ひょっとして関数内で書き換えられるんかと疑ってかかるよね
261デフォルトの名無しさん
2022/02/26(土) 23:44:54.89ID:I1qWxMaG >>232
IPAコーディング左方ガイド[C++言語編] (p.120)
https://www.ipa.go.jp/files/000055043.pdf
>M1.11.1 参照しかしない領域は、const 型であることを示
>す宣言を行う。
(中略)
>参照するだけで変更しない変数を const 型で宣言することで、その変数を変更しないことを明
>示できる。また、処理系の最適化処理でオブジェクトサイズが小さくなる可能性もある。この
>ため、参照しかしない変数は const 型にする。
やそうや;;;
具体的には知らん
IPAコーディング左方ガイド[C++言語編] (p.120)
https://www.ipa.go.jp/files/000055043.pdf
>M1.11.1 参照しかしない領域は、const 型であることを示
>す宣言を行う。
(中略)
>参照するだけで変更しない変数を const 型で宣言することで、その変数を変更しないことを明
>示できる。また、処理系の最適化処理でオブジェクトサイズが小さくなる可能性もある。この
>ため、参照しかしない変数は const 型にする。
やそうや;;;
具体的には知らん
262デフォルトの名無しさん
2022/02/26(土) 23:45:14.56ID:nPeFYJEF 引数に再代入するかどうかは呼び出し側の与り知らぬところなんで
それを公開インターフェースに乗せるのはどうかなぁ。
それを公開インターフェースに乗せるのはどうかなぁ。
263デフォルトの名無しさん
2022/02/26(土) 23:45:57.76ID:BX4iLvdt Rustだと値渡しだけでなく参照渡しも無指定デフォルト時は書き換え不能だよな
書き換えが起こる関数へは指定して可変参照を渡す
書き換えが起こる関数へは指定して可変参照を渡す
264デフォルトの名無しさん
2022/02/26(土) 23:48:32.78ID:UUNvHcAJ どこぞの馬の骨とも知れないIT後進国ジャップが言う事よりも天下のGoogle様のコーディング規約を真似るほうが無難だぞ
そしてGoogleのコーディング規約によると「可能な限りconst付けまくれ」との事
実際にGoogleが公開してるライブラリはCにしろC++にしろ関数の引数から大体const付いてる、ポインタは勿論constバーガーで
そしてGoogleのコーディング規約によると「可能な限りconst付けまくれ」との事
実際にGoogleが公開してるライブラリはCにしろC++にしろ関数の引数から大体const付いてる、ポインタは勿論constバーガーで
265デフォルトの名無しさん
2022/02/26(土) 23:50:44.52ID:I1qWxMaG >>262
あずかり知らぬことならどうでもいいんじゃ……
コピペした後手作業でconstを消すとかアフォらしい漏れクラスの天才の単金は高いからな
やっぱ作る方の作業性優先で、
記憶モードだがVC++のインテリセンスは値渡しのconstは除去して提示してくれるはず……
あずかり知らぬことならどうでもいいんじゃ……
コピペした後手作業でconstを消すとかアフォらしい漏れクラスの天才の単金は高いからな
やっぱ作る方の作業性優先で、
記憶モードだがVC++のインテリセンスは値渡しのconstは除去して提示してくれるはず……
266デフォルトの名無しさん
2022/02/26(土) 23:58:24.50ID:nPeFYJEF でもconst書く方の手間は惜しまないんだ
267デフォルトの名無しさん
2022/02/26(土) 23:58:37.20ID:Cf/OFvAp > 処理系の最適化処理でオブジェクトサイズが小さくなる可能性もある。
> int bar(const int x,
これをどうやって小さくするんだ? そもそもconstの値渡しの話だよな。
> int bar(const int x,
これをどうやって小さくするんだ? そもそもconstの値渡しの話だよな。
268デフォルトの名無しさん
2022/02/27(日) 00:02:08.66ID:/TAxLK2K269デフォルトの名無しさん
2022/02/27(日) 00:02:10.22ID:o7kRBzLD 引数で明示的に書き換え禁止にしたいということはポインタ渡しか参照渡しだよな。
アドレスしか渡してないのに最適化でオブジェクトサイズが小さくなるというのはどういう意味だろう?
アドレスしか渡してないのに最適化でオブジェクトサイズが小さくなるというのはどういう意味だろう?
270デフォルトの名無しさん
2022/02/27(日) 00:05:12.18ID:o7kRBzLD > 「可能な限りconst付けまくれ」
自分で設計、コーディングができなくてオープンソースをパクる側の意見だろう。
あくまでパクりすぎて訴えられて負けるググルくんの意見。
自分で設計、コーディングができなくてオープンソースをパクる側の意見だろう。
あくまでパクりすぎて訴えられて負けるググルくんの意見。
271デフォルトの名無しさん
2022/02/27(日) 00:07:37.55ID:KWP91+7v char*ならアドレス渡すより実値渡す方がサイズ小さくて済むとかじゃない?知らんけどね
272デフォルトの名無しさん
2022/02/27(日) 00:14:47.59ID:/TAxLK2K273デフォルトの名無しさん
2022/02/27(日) 00:39:11.54ID:GNkMbU6V 実質in宣言だよね
274デフォルトの名無しさん
2022/02/27(日) 05:41:24.49ID:+yReYAPt まだ馬鹿がconst不要とかアホなこと言って荒らしてるのか・・・
275デフォルトの名無しさん
2022/02/27(日) 07:45:11.01ID:hjaMvOv0 もういっそのこと、constをメンバ関数宣言のデフォルトにして、volatileキーワードをメンバ関数宣言にそえないとメンバ変数の値を変更できないような仕様変更をしたほうがいいくらいだよ
276デフォルトの名無しさん
2022/02/27(日) 07:54:46.50ID:XiobTp3y ラムダ式の値キャプチャはデフォでconstだね
constつけたくないときはmutable
constつけたくないときはmutable
277デフォルトの名無しさん
2022/02/27(日) 13:50:59.05ID:i/FBvdzu 勝手な憶測だけどconst付けると即値埋め込み以外にもどの変数をレジスタに入れるかって辺りの最適化が効きやすくなりそうな気はする
278デフォルトの名無しさん
2022/02/27(日) 14:21:10.71ID:ai7feBss class ClassA {
public:
int x, y;
ClassA(int n1, int n2) { x = n1, y = n2; }
virtual void VirFunc() = 0;
};
class ClassB :public ClassA {
public:
ClassB(int n1 = 0, int n2 = 0) :ClassA(n1, n2) { ; }
void VirFunc() { cout << "Disp1:x+y=" << x + y << std::endl; }
void Dummy() { ; }
};
void check(ClassA* obj)
{
if (typeid(*obj) == typeid(ClassB)) {
static_cast<ClassB*>(obj)->VirFunc();
}
}
int main()
{
ClassB objB(10, 20);
check(&objB);
}
public:
int x, y;
ClassA(int n1, int n2) { x = n1, y = n2; }
virtual void VirFunc() = 0;
};
class ClassB :public ClassA {
public:
ClassB(int n1 = 0, int n2 = 0) :ClassA(n1, n2) { ; }
void VirFunc() { cout << "Disp1:x+y=" << x + y << std::endl; }
void Dummy() { ; }
};
void check(ClassA* obj)
{
if (typeid(*obj) == typeid(ClassB)) {
static_cast<ClassB*>(obj)->VirFunc();
}
}
int main()
{
ClassB objB(10, 20);
check(&objB);
}
279デフォルトの名無しさん
2022/02/27(日) 14:21:28.24ID:ai7feBss クラスの継承やtyoeidで今躓いています。
objにclassBがなんで代入出来てなんでキャストできるのかわかりません。
check関数の中の引数、ClassAのポインタにClassBで実体化したオブジェクトのアドレスを入れると言うことは
継承した部分だけを見ることで同じ型として見ているのですか?
だとしたら派生先のクラスでできたメンバ?がどうなるんだろうと言うのもわからなかったりはします。
objにclassBがなんで代入出来てなんでキャストできるのかわかりません。
check関数の中の引数、ClassAのポインタにClassBで実体化したオブジェクトのアドレスを入れると言うことは
継承した部分だけを見ることで同じ型として見ているのですか?
だとしたら派生先のクラスでできたメンバ?がどうなるんだろうと言うのもわからなかったりはします。
280デフォルトの名無しさん
2022/02/27(日) 14:22:00.29ID:ai7feBss すみませんコードってどう上げれば良いんでしたっけ?
■ このスレッドは過去ログ倉庫に格納されています
