X



【初心者歓迎】C/C++室 Ver.101【環境依存OK】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2017/07/18(火) 07:07:27.20ID:vzMDiUgd
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。

【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)

前スレ
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
http://mevius.2ch.net/test/read.cgi/tech/1478440682/
0352デフォルトの名無しさん
垢版 |
2017/08/11(金) 08:55:50.68ID:xt3khzo9
constexprにしたほうがいいものがconstになってるのは結構あるけど、defineなんてほぼ見ないけどな
0360デフォルトの名無しさん
垢版 |
2017/08/11(金) 14:43:55.42ID:Tw4iEl8C
Cに移植する可能性がゼロであるコードをC++上で新規でdefineで書いてたら老害だと思う
0361デフォルトの名無しさん
垢版 |
2017/08/11(金) 15:18:06.60ID:BFfVWgAm
組み込みCだとstatic const使えてもアセンブリレベルで
即値にならないので#defineは常識
環境依存スレで多様性否定する奴は去れ
0369デフォルトの名無しさん
垢版 |
2017/08/11(金) 22:38:20.04ID:+GdUPlS/
>>364
どちらもコンパイル時に決まるものも決まらないものも扱うUNKO仕様なので常人が理解できないのは致し方ない
一つ知っておくべきなのは「constexprの変数はコンパイル時に決まるもののみ」ということ
0370デフォルトの名無しさん
垢版 |
2017/08/12(土) 06:07:41.79ID:Bi4KH0eW
>>367
一般人はRAMも見たことないよ

組み込み用マイコンだと、フラッシュROMからそのまま実行したりする
コードもconstデータもROMに置いてそのまま実行出来る
0374デフォルトの名無しさん
垢版 |
2017/08/12(土) 09:18:14.87ID:l8v9tpAX
>>373
> デシタルネイティブ「RAMもROMを見たことがない」
デバイスの話なのか
チップの話なのか
ダイの話なのか
0375デフォルトの名無しさん
垢版 |
2017/08/12(土) 11:23:24.91ID:cYvxwySm
>>374
そんなこともわからんのかジジイは
「どんなものかは知らんがRAMとかROMとか呼ばれるモンを見たことがない」
ってことだ
それ以上の意味はない
0376デフォルトの名無しさん
垢版 |
2017/08/12(土) 11:30:23.35ID:Rv1gs3bL
CDショップやDVDレンタルショップがあってもそこに並んでいるのがROMだと認識できない無知なだけでは
0379デフォルトの名無しさん
垢版 |
2017/08/12(土) 15:36:58.80ID:B05a5g6/
まあスマホのスペックにはROMとRAMの容量が書いてあるけど
殆どの利用者は理解してないな
0383デフォルトの名無しさん
垢版 |
2017/08/12(土) 22:15:11.32ID:KtFjlZWy
class C {
private:
static int secret;
public:
friend int peep() {return secret;}
};
このpeepはどうやって呼び出すのが正解なんだぜ?
0385デフォルトの名無しさん
垢版 |
2017/08/12(土) 22:25:08.16ID:KtFjlZWy
>>384
コンパイルは通るんだがまるで飲み込まれたようだぜ
c.peep();
peep();
C::peep();
どれも反応しない
0386デフォルトの名無しさん
垢版 |
2017/08/12(土) 22:28:18.66ID:3DdLvbHE
へー、通るんだ。
とりあえず、peep()はメンバー関数じゃないから引数にCを渡すなりするのが普通の使い方だろう。
0388デフォルトの名無しさん
垢版 |
2017/08/12(土) 22:41:10.73ID:KtFjlZWy
おおお
Cクラス渡すと通った
class C {
private:
static int secret;
public:
friend int peep(C data) {return secret;}
};
int PosCalc(BOOL flag) {
C data(0, 0)
int count = peep(data);
//いろいろ計算
}
ダミーでインスタンス渡すってことなんだな
0395デフォルトの名無しさん
垢版 |
2017/08/13(日) 01:36:36.53ID:HI8S2XNx
文脈で判断しないと。CでROMつったら不揮発性メモリのこと。CDROMのことではない。
0396デフォルトの名無しさん
垢版 |
2017/08/13(日) 01:39:15.30ID:PA7iDDOj
それにしてもfirendって付けた関数の方にボディーを書くことが出来るんだな
キモ
0401デフォルトの名無しさん
垢版 |
2017/08/13(日) 08:21:05.43ID:49RznEc3
揮発不揮発は関係ない
読み込みと同等の速度で普通に書き込みが出来るか
Cの場合、普通の代入やmemcpyで普通に書き込み出来るかどうか
0404デフォルトの名無しさん
垢版 |
2017/08/13(日) 10:16:39.11ID:TSMbvEPJ
>>395
メモリの不揮発性ってのは意味合いが違うぞ。
フラッシュメモリは不揮発性だがROMではない。
0418デフォルトの名無しさん
垢版 |
2017/08/14(月) 00:46:16.17ID:NpV9/t44
フラッシュもEEPROMもROMと呼ばれる
ROMの語源はRead Only Memory
でも、今は消去や書き込みが可能なメモリにも使われるようになった

読み書きともランダムアクセスが可能で、アクセス時間も読み込みと書き込みで大きな差が無いものがRAM
DRAMやSRAM, MRAM, FRAMがこの範疇

そうでないものがROM
NAND, NOR, EEPROMなんかはROMという扱い
0419デフォルトの名無しさん
垢版 |
2017/08/14(月) 00:59:13.70ID:qET1a6fj
いろんな人がいるね。
俺の中では電源切っても覚えてるかどうかの違いだよ。
0422デフォルトの名無しさん
垢版 |
2017/08/14(月) 01:33:45.85ID:IT2ffc23
ID:qET1a6fjが非常識なのはよく分かったけどあまり言いふらさない方が生活し易いと思うよ
0424デフォルトの名無しさん
垢版 |
2017/08/14(月) 04:51:13.03ID:qbtpazWw
template <typename T>
class DataStoreArray
{
public:
explicit DataStoreArray(std::size_t size) : mValueArray(new T[size]) {}
~DataStoreArray() { delete [] mValueArray; }
inline T operator[](std::size_t index) const
{
cout << "from primary : T : " << index <<endl;
return mValueArray[index];
}
inline T& operator[](std::size_t index)
{
cout << "from primary : T& : " << index <<endl;
return mValueArray[index];
}
private: T* mValueArray;
};
int main()
{
static const int size = 3;
DataStoreArray<int> iStoreArray(size);
for (int i = 0; i < size; ++i)
{
iStoreArray[i] = i * 10;
}
}
from primary : T& : 0
from primary : T& : 1
from primary : T& : 2
iStoreArray2[i] = i * 10;で[]をオーバーロードした時
戻り値がT&のほうが呼び出されるのはなんででしょうか?
0425デフォルトの名無しさん
垢版 |
2017/08/14(月) 05:23:42.65ID:P3rVXCaa
class Point {
public:
Point() {}
int x, y;
};

std::vector<Point*> vec;
vec..push_back(new Point());

こんな感じに作られたvectorの中のPointを解放するにはどうしたらいいでしょうか
以下のようなコードを考えて実行していたところ、free_base.cppというところで例外が発生しました
内容は「block Error reading register value.」です
for (unsigned int i = 0; i < vec.size(); i++) {
delete vec[i];
}
0426424
垢版 |
2017/08/14(月) 05:24:58.54ID:qbtpazWw
>>424
自己解決しました。
0427デフォルトの名無しさん
垢版 |
2017/08/14(月) 05:58:41.65ID:qbtpazWw
>>425
タイプミスとは思うけどvec..push_backのドット2つ付けてるのが原因じゃ
0434デフォルトの名無しさん
垢版 |
2017/08/14(月) 22:21:54.47ID:i3ERgNqH
2chにコード書きこんで質問するんなら
そのコードで問題が再現するのかどうなのかぐらい確認してから
書き込んだ方が良いだろうな、常識的に
0436デフォルトの名無しさん
垢版 |
2017/08/14(月) 23:24:57.28ID:gV3KeQMV
普通は再現する最小限のコードこさえてる時点で
たいていはバグの原因に気付いて質問やめる
0438デフォルトの名無しさん
垢版 |
2017/08/15(火) 01:01:30.84ID:xb8goknd
>>437
WindowsのHeapFreeが出したりするエラーで基本的にはメモリをぶっ壊してる事に起因するらしい
ただしリビルドしたら治ったとかいう話もあったりしてなんだか分からない
0439デフォルトの名無しさん
垢版 |
2017/08/15(火) 01:17:41.90ID:ILMibSrs
なら、流行の方法は知らないけど、ポインタを最初にNULLできちんと初期化して
NULLチェックしてからdeleteして、deleteしたら忘れずにNULLで初期化すれぱいいんじゃないの。
0441デフォルトの名無しさん
垢版 |
2017/08/15(火) 01:43:30.18ID:z7TEyY+0
>>439
deleteするときのNULLチェックていらないよね
NULL(nullptr)のdeleteは何も起こらない保証があるから使い終わった後にNULL代入するのはよくやるけど

まぁ今どきのC++なら素直に>>440だね
0442デフォルトの名無しさん
垢版 |
2017/08/15(火) 02:48:07.41ID:ILMibSrs
調べたらいっぱいあって余計に混乱しそうだわ
auto_ptr
unique_ptr
shared_ptr
weak_ptr
0444デフォルトの名無しさん
垢版 |
2017/08/15(火) 08:15:54.91ID:GzAS59pw
>>442
auto_ptr ⇒ オワコン、使用禁止
unique_ptr ⇒ 共有しないならこれ
shared_ptr ⇒ 共有するならこれ
weak_ptr ⇒ はて?いつ使うんだこれ
0448デフォルトの名無しさん
垢版 |
2017/08/15(火) 15:03:52.07ID:cAweUVNO
話題に便乗して。
new,delete満載の既存のコードをスマポに置き換えてくコツみたいのってあります?
作り直したほうが早いのかな
0449デフォルトの名無しさん
垢版 |
2017/08/15(火) 18:45:11.19ID:tu7eHngw
shared_ptrか生ポの入ったvectorを基底クラスにアップキャストするスマートな方法おしえてください
割と使うくせに良い方法が思いつかない
0451デフォルトの名無しさん
垢版 |
2017/08/15(火) 23:43:12.59ID:VOm+amDT
アップキャストは特に何もしなくても必要になれば勝手に安全にアップキャストされるから
アップキャストするスマートな方法って質問の意図が良くわからない
というか、安全に勝手にアップキャストされるのは静的型のメリットの一つだし
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況