!extend:checked:vvvvv:1000:512
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
C言語なら俺に聞け 151
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ cf8f-fy95)
2019/04/02(火) 11:23:37.62ID:SQXqRaAc0598デフォルトの名無しさん (ワッチョイ ee02-8NB0)
2019/05/21(火) 19:19:14.41ID:IJ+i04U80 こんな感じでいいのか?
#include <stdio.h>
int main(void) {
FILE* fp;
fp = fopen("Test.txt","w");
fprintf(fp,"hoge\n");
fseek(fp,-1,SEEK_CUR); /* 改行2byteなら-2 */
fprintf(fp,"fuga\n");
fclose(fp);
return 0;
}
#include <stdio.h>
int main(void) {
FILE* fp;
fp = fopen("Test.txt","w");
fprintf(fp,"hoge\n");
fseek(fp,-1,SEEK_CUR); /* 改行2byteなら-2 */
fprintf(fp,"fuga\n");
fclose(fp);
return 0;
}
599デフォルトの名無しさん (ワッチョイ 462d-EL+e)
2019/05/21(火) 19:53:55.55ID:UPiNM42a0 質問者が知りたい情報とは違うので、スルー推奨かもですが。
もし自分が、同じことをやれ、と言われたら。
「改行を含んだ文字列」を、「改行」と「それ以外の文字列」の2つに分けて、別々に出力しようとするかなあ。
ループの回数を変える必要はなくて。イメージとしては
for() ※行単位のループ
{
if(最初の行でなければ) fprintf で「改行」を出力
fprintf で「それ以外の文字列」を出力
}
fprintf で「別の文を出力」
もし自分が、同じことをやれ、と言われたら。
「改行を含んだ文字列」を、「改行」と「それ以外の文字列」の2つに分けて、別々に出力しようとするかなあ。
ループの回数を変える必要はなくて。イメージとしては
for() ※行単位のループ
{
if(最初の行でなければ) fprintf で「改行」を出力
fprintf で「それ以外の文字列」を出力
}
fprintf で「別の文を出力」
600デフォルトの名無しさん (ドコグロ MM02-A+mh)
2019/05/21(火) 19:58:03.98ID:kdkwqODuM >>595
bool First = true;
for( … ){
if(First){
First = false;
} else {
fprintf("¥n");
}
fprintf( … );
}
bool First = true;
for( … ){
if(First){
First = false;
} else {
fprintf("¥n");
}
fprintf( … );
}
601デフォルトの名無しさん (ドコグロ MM02-A+mh)
2019/05/21(火) 19:58:35.62ID:kdkwqODuM あっ、被ったや
602デフォルトの名無しさん (ワッチョイ ee02-8NB0)
2019/05/21(火) 20:07:13.38ID:IJ+i04U80 ファイルが標準出力等でvt100互換端末であれば。
#include <stdio.h>
#include <string.h>
int main(void) {
int i;
i=fprintf(stdout,"hogehogehogehoge\n");
if (0) fprintf(stdout,"\E[01Afuga%*c\n",i,' '); /* これか? */
else fprintf(stdout,"\E[01A\E[%02dCfuga\n",i-strlen("\n")); /* あるいはこれか? */
return 0;
}
cmdとかdos窓なら無理?
#include <stdio.h>
#include <string.h>
int main(void) {
int i;
i=fprintf(stdout,"hogehogehogehoge\n");
if (0) fprintf(stdout,"\E[01Afuga%*c\n",i,' '); /* これか? */
else fprintf(stdout,"\E[01A\E[%02dCfuga\n",i-strlen("\n")); /* あるいはこれか? */
return 0;
}
cmdとかdos窓なら無理?
603デフォルトの名無しさん (ササクッテロル Sp88-Qul6)
2019/05/21(火) 20:22:57.69ID:G/IUf+gXp604デフォルトの名無しさん (スププ Sd94-AU7T)
2019/05/21(火) 20:31:17.43ID:JOJ6V6qzd プログラムいじられるなら、改行出す方をどうにかした方が良さそうだが
605デフォルトの名無しさん (ワッチョイ aaf9-8NB0)
2019/05/21(火) 20:31:52.25ID:8vKfOnx40 ansi.sysを組み込めばVT100互換エスケープシーケンスが
という昔話…と思ったが、ググったらvistaまであったんだな驚き
Windows 10 Threshold 2(10.0.1058)ではコマンドプロンプトでANSI/VT100互換表示が可能に
というスラドの記事も出た
という昔話…と思ったが、ググったらvistaまであったんだな驚き
Windows 10 Threshold 2(10.0.1058)ではコマンドプロンプトでANSI/VT100互換表示が可能に
というスラドの記事も出た
606デフォルトの名無しさん (アウアウウー Sa83-RNyv)
2019/05/21(火) 20:52:46.26ID:BVi2WQ22a 最後に改行出すんじゃなくて最初に改行出すようにすれば良いだけでは?
一番最初の行だけは最初に出さなければ良いだけ。
バッファリングされて出力されないのが嫌なら行末でfflush()する。
一番最初の行だけは最初に出さなければ良いだけ。
バッファリングされて出力されないのが嫌なら行末でfflush()する。
607デフォルトの名無しさん (ワッチョイ aa01-A+mh)
2019/05/21(火) 21:47:10.75ID:n1jvW3Ih0608デフォルトの名無しさん (ワッチョイ 9602-XAPB)
2019/05/21(火) 22:06:40.11ID:Y+BS98b80609デフォルトの名無しさん (ワッチョイ 1e01-Qul6)
2019/05/21(火) 22:09:47.12ID:JtLDtEYt0610デフォルトの名無しさん (ワッチョイ dfb9-9b2Z)
2019/05/24(金) 09:00:19.45ID:h3dkW7YJ0 C言語はクラスが無い。
それは実際どれくらい問題になりますか?
昔C使ってたけど、本格的な抽象的設計をやってたわけじゃなくて、
最近Java使っててそういうのをやりだしたけど、
今思い返してみるとC言語はクラスや継承や多態性が無いから
かなり厳しい言語なんじゃないかな、と思ったんです。
メジャーなカーネルがCで作られてるという事実に驚愕します。
クラス無しで大規模開発は不可能としか思えません。
それどころか、1アルゴリズムの実装でもクラスは有用だと思うんですが。
最近、NimとかRustのようなCを代替するかもしれない勢いのある言語があります。
そういう言語はかなり抽象的な設計が可能です。
そういうのと比べると、小さなデバイスドライバみたいなものはCでいいだろうけど、
大規模開発におけるCはかなり無理があるんじゃないかな?と
そうでもないものですか?
それは実際どれくらい問題になりますか?
昔C使ってたけど、本格的な抽象的設計をやってたわけじゃなくて、
最近Java使っててそういうのをやりだしたけど、
今思い返してみるとC言語はクラスや継承や多態性が無いから
かなり厳しい言語なんじゃないかな、と思ったんです。
メジャーなカーネルがCで作られてるという事実に驚愕します。
クラス無しで大規模開発は不可能としか思えません。
それどころか、1アルゴリズムの実装でもクラスは有用だと思うんですが。
最近、NimとかRustのようなCを代替するかもしれない勢いのある言語があります。
そういう言語はかなり抽象的な設計が可能です。
そういうのと比べると、小さなデバイスドライバみたいなものはCでいいだろうけど、
大規模開発におけるCはかなり無理があるんじゃないかな?と
そうでもないものですか?
611デフォルトの名無しさん (アウアウエー Sa9f-eVvB)
2019/05/24(金) 09:04:22.51ID:a6wIXg41a まあファイルがクラスと同じだし。
継承はしづらいけど、そんなもん使ったらC++でもむしろ見通し悪くなるでしょ?
継承はしづらいけど、そんなもん使ったらC++でもむしろ見通し悪くなるでしょ?
612デフォルトの名無しさん (ワッチョイ dfa5-vAXu)
2019/05/24(金) 10:11:20.70ID:M2ZwKTAn0 最大のデバイスドライバがOSのカーネルなんじゃねえの
そしてそれがC言語の限界
そしてそれがC言語の限界
613デフォルトの名無しさん (ワッチョイ dfb9-9b2Z)
2019/05/24(金) 10:43:06.36ID:h3dkW7YJ0 Linuxカーネルは2100万行を超えているそうなので
たぶん地球上でもっとも大規模な開発の1つです。
たぶん地球上でもっとも大規模な開発の1つです。
614デフォルトの名無しさん (ワッチョイ bf8c-GX6Y)
2019/05/24(金) 11:21:47.36ID:0dR+L/D60 責任ある人は気がくるっているじゃない。
615デフォルトの名無しさん (アウアウウー Saab-EYzY)
2019/05/24(金) 12:25:59.56ID:Cw+6mW4za Cでもオブジェクト指向的に考えて作ることは可能。構造体へのポインタまたは情報を区別する番号などを渡してその中身に基づいて処理する関数作ればいいので。
ファイルアクセスとかは作りがそうなってるよね。
ファイルアクセスとかは作りがそうなってるよね。
616デフォルトの名無しさん (ワッチョイ c7d2-Fpyl)
2019/05/24(金) 12:32:21.84ID:M3xcEept0 クラスはコンストラクタ/デストラクタは活用したけど
継承で面倒になって、ちょっと便利な関数付き構造体としてしか設計したことない。
継承で面倒になって、ちょっと便利な関数付き構造体としてしか設計したことない。
617デフォルトの名無しさん (ブーイモ MMcb-/OyN)
2019/05/24(金) 12:35:03.01ID:C+5joBz9M C言語ではオブジェクト指向も関数型プログラミングもできる。その下位レイヤーだから。
面倒臭いけど。
面倒臭いけど。
618デフォルトの名無しさん (ドコグロ MM9f-LXA5)
2019/05/24(金) 12:50:51.48ID:8pSuDyEhM >>613
デバドラとかが山ほどあるだけでコア部分はそんなにたいしたことないよ
デバドラとかが山ほどあるだけでコア部分はそんなにたいしたことないよ
619デフォルトの名無しさん (ドコグロ MM9f-LXA5)
2019/05/24(金) 12:53:08.72ID:8pSuDyEhM620デフォルトの名無しさん (アウアウウー Saab-EYzY)
2019/05/24(金) 12:59:14.48ID:Cw+6mW4za まあしかしC++は複雑怪奇な状態になったような感じがするのでなんか別の言語でオブジェクト指向やった方が良いような気がする。
621デフォルトの名無しさん (ワッチョイ c7da-YLUn)
2019/05/24(金) 13:49:11.26ID:FIKXvkBI0 Javaがとてもシンプルな言語に見えてくる
622デフォルトの名無しさん (スププ Sdff-OWKl)
2019/05/24(金) 14:27:11.63ID:YkjJvwKvd linux kernelなんておもくそオブジェクト指向的な構造だろ
623デフォルトの名無しさん (ワッチョイ e701-/OyN)
2019/05/24(金) 19:13:34.31ID:E0qJKDus0 関係ないけどOOPが流行り始めた頃に「WindowsのUIはオブジェクト指向だ」と言ってたやつを思い出した。
624デフォルトの名無しさん (ワッチョイ 7f63-buEI)
2019/05/24(金) 19:26:36.07ID:omgaeJxY0 目指していた方向はそうだったと思う
628デフォルトの名無しさん (アウアウウー Saab-EYzY)
2019/05/24(金) 20:41:47.14ID:1FXcUtRQa いやできなくはないよ。何せC++は元々はCへのコンバータだったしな。C++のソースを読んでC言語に変換して後のことはCコンパイラに任せてたんだよ。それが初期のC++。
もちろんCは言語そのものがオブジェクト指向をサポートしてないから人間がそれをやろうとするととても面倒な事になるけどな。
もちろんCは言語そのものがオブジェクト指向をサポートしてないから人間がそれをやろうとするととても面倒な事になるけどな。
629デフォルトの名無しさん (ワッチョイ e701-/OyN)
2019/05/24(金) 20:51:16.47ID:E0qJKDus0 そんなん言い始めたらアセンブラでもオブジェクト指向プログラミングできることになっちゃう。
言語としてOOPがサポートされてなきゃ認められないでしょ。
言語としてOOPがサポートされてなきゃ認められないでしょ。
>>628
>C++のソースを読んでC言語に変換して後のことはCコンパイラに任せてたんだよ。それが初期のC++。
C++ から C へのトランスパイラが存在したからといって、C にてオブジェクト指向(的ではなくそのものずばり)なプログラミングができるわけではありません
C++ のコンパイラが存在するからといって機械語が OO でないのと同じです、まず、
C++ https://ideone.com/vAp2Sj
に対応する C のコードを示してください
>C++のソースを読んでC言語に変換して後のことはCコンパイラに任せてたんだよ。それが初期のC++。
C++ から C へのトランスパイラが存在したからといって、C にてオブジェクト指向(的ではなくそのものずばり)なプログラミングができるわけではありません
C++ のコンパイラが存在するからといって機械語が OO でないのと同じです、まず、
C++ https://ideone.com/vAp2Sj
に対応する C のコードを示してください
632デフォルトの名無しさん (ワッチョイ 67f6-dCWx)
2019/05/24(金) 21:12:51.85ID:ZwmHdTYl0 >>610
全く問題にならない
classというキーワードがなくても
コードを書く者の考え方次第でカプセル化や継承はできる
FILE構造体がその例だ
多態性がないというのは、おまえさんの認識不足で
関数ポインタでそんなものはすぐに実現できる
そういう認識不足があるからこそ
メジャーなカーネルをなぜ書けたかが理解できないのだ
全く問題にならない
classというキーワードがなくても
コードを書く者の考え方次第でカプセル化や継承はできる
FILE構造体がその例だ
多態性がないというのは、おまえさんの認識不足で
関数ポインタでそんなものはすぐに実現できる
そういう認識不足があるからこそ
メジャーなカーネルをなぜ書けたかが理解できないのだ
633デフォルトの名無しさん (ワッチョイ 67f6-dCWx)
2019/05/24(金) 21:15:04.81ID:ZwmHdTYl0634デフォルトの名無しさん (アウアウエー Sa9f-eVvB)
2019/05/24(金) 21:24:37.67ID:QPLeHwR8a まあ継承なんてオブジェクト指向と関係ないよ
637デフォルトの名無しさん (ワッチョイ e701-GX6Y)
2019/05/24(金) 21:56:28.68ID:wwZ4gkZH0 仮想関数テーブルの実装方法について語るスレはここですか?
638デフォルトの名無しさん (ワッチョイ 67f6-dCWx)
2019/05/24(金) 22:01:07.63ID:ZwmHdTYl0639デフォルトの名無しさん (ワッチョイ 67f6-dCWx)
2019/05/24(金) 22:02:14.93ID:ZwmHdTYl0640蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 2701-6B7C)
2019/05/24(金) 22:06:22.36ID:/xfbOr910 >>638
ではストロヴストルップやリップマンはどういっているのか、ここに引用していただけますか?
あらかじめいっておきますが、引用はできない、なぜならば、そんな内容をストロヴストルップもリップマンも書いていないのだから
ではストロヴストルップやリップマンはどういっているのか、ここに引用していただけますか?
あらかじめいっておきますが、引用はできない、なぜならば、そんな内容をストロヴストルップもリップマンも書いていないのだから
642デフォルトの名無しさん (ワッチョイ df01-LXA5)
2019/05/24(金) 22:18:09.05ID:TMKOHW7N0643デフォルトの名無しさん (ワッチョイ e701-1x1Z)
2019/05/24(金) 22:21:05.39ID:0NhXAFL60 概念ならFILE構造体とそれの操作関数群
>>642
それは smalltalk 的な OO であって C++ の OO の概念とは多少食い違うと思います
それは smalltalk 的な OO であって C++ の OO の概念とは多少食い違うと思います
646デフォルトの名無しさん (ワッチョイ e701-1x1Z)
2019/05/24(金) 22:24:05.41ID:0NhXAFL60 コンストラクタとデストラクタの機構だけは欲しいと思ったことがしばしば
648デフォルトの名無しさん (ブーイモ MMcf-wr5r)
2019/05/24(金) 22:41:32.12ID:K6buSCwsM glibとか大昔からあるじゃん…
glibがooでないならooの定義をまず示せ
glibがooでないならooの定義をまず示せ
649デフォルトの名無しさん (アウアウカー Sa3b-eVvB)
2019/05/24(金) 22:42:05.32ID:hUeULEjja オブジェクト指向ってC++固有の概念なの?
だとすると、そりゃCで実現は無理でしょう。関係ないんだから。CとC++は。
だとすると、そりゃCで実現は無理でしょう。関係ないんだから。CとC++は。
>>648
glibc++ は OO かもしれませんが glibc が OO だとは寡聞にして聞きませんね
glibc++ は OO かもしれませんが glibc が OO だとは寡聞にして聞きませんね
652デフォルトの名無しさん (アウアウカー Sa3b-eVvB)
2019/05/24(金) 22:50:26.22ID:hUeULEjja653デフォルトの名無しさん (アウアウカー Sa3b-eVvB)
2019/05/24(金) 22:51:22.70ID:hUeULEjja654蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 2701-uiLC)
2019/05/24(金) 22:53:40.43ID:/xfbOr910 GTKのGLibだよね。
656デフォルトの名無しさん (ブーイモ MMcf-wr5r)
2019/05/24(金) 22:55:59.59ID:K6buSCwsM657デフォルトの名無しさん (ワッチョイ c7c3-OWKl)
2019/05/24(金) 23:36:16.20ID:SCqWQYPI0658デフォルトの名無しさん (ワッチョイ c7c3-OWKl)
2019/05/24(金) 23:46:49.71ID:SCqWQYPI0659デフォルトの名無しさん (ワッチョイ bfba-GX6Y)
2019/05/24(金) 23:58:34.02ID:S5Q/uU3j0 >>655
CでもOOできるし、継承できるし、オーバーライドもできる。
20年位前の本に「ANSI C に準拠したコンパイラならできる」と紹介されている。
メモリを意識したコードを書けない人には理解できないけどね。
CでもOOできるし、継承できるし、オーバーライドもできる。
20年位前の本に「ANSI C に準拠したコンパイラならできる」と紹介されている。
メモリを意識したコードを書けない人には理解できないけどね。
660デフォルトの名無しさん (ワッチョイ dfb9-9b2Z)
2019/05/25(土) 00:01:58.97ID:7Hh+Cor80 C言語はABIが標準化されている、という文を見たんですが、
その標準仕様の名前は何ですか?
新しいプラットフォームがその標準仕様を満たせば
バイナリレベルあるいはソースレベルで移植性があるんでしょうか?
その標準仕様の名前は何ですか?
新しいプラットフォームがその標準仕様を満たせば
バイナリレベルあるいはソースレベルで移植性があるんでしょうか?
661デフォルトの名無しさん (ワッチョイ bfba-GX6Y)
2019/05/25(土) 00:07:07.65ID:KPhaQb+n0662デフォルトの名無しさん (ワッチョイ c7c3-OWKl)
2019/05/25(土) 00:11:09.80ID:oops2jeN0 アーキテクチャ跨いでABIが統一できるわけないよね
引数の渡し方なんてアーキテクチャ変わったらそもそも使えるレジスタ変わるし
同一アーキテクチャの特定OS内ならバージョン変わってもABI互換ってのは良くあるけど
引数の渡し方なんてアーキテクチャ変わったらそもそも使えるレジスタ変わるし
同一アーキテクチャの特定OS内ならバージョン変わってもABI互換ってのは良くあるけど
664デフォルトの名無しさん (ワッチョイ df01-LXA5)
2019/05/25(土) 05:52:48.29ID:Tic4GHY30665デフォルトの名無しさん (ワッチョイ df79-buEI)
2019/05/25(土) 05:57:11.32ID:6KmI3UXB0 Cでオブジェクト指向プログラムなんて書くのは時間の無駄
速度が必要な部分だけCで作るのが正解
速度が必要な部分だけCで作るのが正解
666デフォルトの名無しさん (ワッチョイ 67f6-dCWx)
2019/05/25(土) 06:05:28.22ID:6T2yG8cn0667デフォルトの名無しさん (ドコグロ MM9f-LXA5)
2019/05/25(土) 07:19:56.39ID:DOpjF4HUM >>658
>多重じゃない継承の場合Cでは1つめのメンバにベースクラスのインスタンスを書くというルールなだけ
C では構造体のメンバの順番をプログラムから指定することはできたのでしょうか?
C コンパイラはアラインメントを考慮して最適化をはかり構造体のメンバを、プログラマの記述から適宜入れ替えていもいいのでは?
となると一つめのメンバにベースクラスのインスタンスを書いても、コンパイラに入れ替えられてしまっては無意味なのでは?
>多重じゃない継承の場合Cでは1つめのメンバにベースクラスのインスタンスを書くというルールなだけ
C では構造体のメンバの順番をプログラムから指定することはできたのでしょうか?
C コンパイラはアラインメントを考慮して最適化をはかり構造体のメンバを、プログラマの記述から適宜入れ替えていもいいのでは?
となると一つめのメンバにベースクラスのインスタンスを書いても、コンパイラに入れ替えられてしまっては無意味なのでは?
>>666
>てめえの怠慢を俺が尻拭いする筋合いはねえぜ
あなたは私の怠慢を主張するのと同様の筋で、私はあなたの欺瞞を主張します
出典元や引用を正確にできないのであれば、あなたは嘘をついていると判断されてもしかたがないと思います
>てめえの怠慢を俺が尻拭いする筋合いはねえぜ
あなたは私の怠慢を主張するのと同様の筋で、私はあなたの欺瞞を主張します
出典元や引用を正確にできないのであれば、あなたは嘘をついていると判断されてもしかたがないと思います
>>661
片山先生は私とは比較にならないほど生産性の高いプログラマですよ
片山先生は私とは比較にならないほど生産性の高いプログラマですよ
673デフォルトの名無しさん (ワッチョイ df01-LXA5)
2019/05/25(土) 16:17:34.75ID:Tic4GHY30 >>673
コメントありがとうございます。確かに >>668 には誤りが含まれていました
ISO/IEC 9899:1999
6.7.2.1.5
As discussed in 6.2.5, a structure is a type consisting of a sequence of members, whose
storage is allocated in an ordered sequence,
JIS X3010:2003
構造体は,メンバの列から成る型とし,メンバの記憶域は,並べられた順に割り付ける(6.2.5参照)。
しかし、この記述は構造体のパディングが構造体の先頭に詰められる場合を排除していないと考えます
よって、>>658
>多重じゃない継承の場合Cでは1つめのメンバにベースクラスのインスタンスを書く
>それだけで呼び出し元のコードはほぼなにも考えずにベースクラスの機能を使うことができる
構造体の先頭にパディングがあった場合は、この記述は正しくないのではないでしょうか。
コメントありがとうございます。確かに >>668 には誤りが含まれていました
ISO/IEC 9899:1999
6.7.2.1.5
As discussed in 6.2.5, a structure is a type consisting of a sequence of members, whose
storage is allocated in an ordered sequence,
JIS X3010:2003
構造体は,メンバの列から成る型とし,メンバの記憶域は,並べられた順に割り付ける(6.2.5参照)。
しかし、この記述は構造体のパディングが構造体の先頭に詰められる場合を排除していないと考えます
よって、>>658
>多重じゃない継承の場合Cでは1つめのメンバにベースクラスのインスタンスを書く
>それだけで呼び出し元のコードはほぼなにも考えずにベースクラスの機能を使うことができる
構造体の先頭にパディングがあった場合は、この記述は正しくないのではないでしょうか。
>>674
> a type consisting of a sequence of members, whose storage is allocated …
この is にも惑わされてしまいました
これは
a type consisting of a sequence of members, each of which is allocated about storage in an ordered sequence
とか
a type consisting of a sequence of members, each of which's storage is allocated in an ordered sequence
くらいに解釈するべきなんですね
検討する機会をいただきありがとうございました
> a type consisting of a sequence of members, whose storage is allocated …
この is にも惑わされてしまいました
これは
a type consisting of a sequence of members, each of which is allocated about storage in an ordered sequence
とか
a type consisting of a sequence of members, each of which's storage is allocated in an ordered sequence
くらいに解釈するべきなんですね
検討する機会をいただきありがとうございました
677デフォルトの名無しさん (ブーイモ MMcb-wr5r)
2019/05/25(土) 21:04:32.61ID:DDy3bloZM >>675
絶対許さんぞおおおお
絶対許さんぞおおおお
678デフォルトの名無しさん (アウアウエー Sa9f-eVvB)
2019/05/25(土) 21:07:06.72ID:aM9QB8YDa オブジェクト指向って抽象化が目的なのに、メモリ配置とか気にするのは馬鹿みたいだよな
679デフォルトの名無しさん (ワッチョイ e701-GX6Y)
2019/05/25(土) 21:23:55.56ID:cjrLAMgS0 MicrosoftのCOMはほとんど全てのコンパイラが構造体のメモリ配列を同じ様にするってのを利用してるんだっけ?
680デフォルトの名無しさん (ドコグロ MMeb-LXA5)
2019/05/25(土) 22:13:30.07ID:UN9uDEfaM >>678
ここにも概念と実装の区別がついてないバカが…w
ここにも概念と実装の区別がついてないバカが…w
681デフォルトの名無しさん (ワッチョイ bfba-GX6Y)
2019/05/25(土) 23:25:49.27ID:KPhaQb+n0 >>669
C言語でオブジェクト指向を表現する (クラス、継承)
https://qiita.com/qiita_kuru/items/8f3441bce9b2f53d1d62
この辺でも読んどけ。
「何故できるか」まで言及したもっといい文献はあるがカスには教えない。
俺は「せざるを得ない」状況だったのでCでOOしたが、ネイティブでOOできるならそれに越したことはない。
あ、同じ板でハッシュが一致してるのでお前は蟻。
C言語でオブジェクト指向を表現する (クラス、継承)
https://qiita.com/qiita_kuru/items/8f3441bce9b2f53d1d62
この辺でも読んどけ。
「何故できるか」まで言及したもっといい文献はあるがカスには教えない。
俺は「せざるを得ない」状況だったのでCでOOしたが、ネイティブでOOできるならそれに越したことはない。
あ、同じ板でハッシュが一致してるのでお前は蟻。
682デフォルトの名無しさん (アウアウエー Sa9f-eVvB)
2019/05/26(日) 01:24:13.78ID:zv+FEFKTa >>681
またおまえか
またおまえか
683デフォルトの名無しさん (ワッチョイ 67f6-dCWx)
2019/05/26(日) 08:36:08.16ID:o+/j3IaP0684デフォルトの名無しさん (ワッチョイ e7dc-dCWx)
2019/05/26(日) 08:56:22.54ID:7tI1cTYc0 もうこんなとこで喧嘩しても勝敗つかないんだからやめろw
仲良くできねえのかお前らは
仲良くできねえのかお前らは
685デフォルトの名無しさん (ワッチョイ df2c-o9SV)
2019/05/26(日) 12:29:05.12ID:lzKtO2WM0 でも冷静になって考えてみろ
単細胞時代から何億年と喧嘩してきた結果今の人間がいる訳だから喧嘩をやめてしまったらそれは果たして生物と言えるのか
逆に言えばAIが人知を超える時
人間は機械に滅ぼされ地球から人間はいなくなっているという事
つまり今何をすべきかと言うと人間は思考をやめアホになるべきである
そうアホの坂田こそ未来の救世主ネオなのである
単細胞時代から何億年と喧嘩してきた結果今の人間がいる訳だから喧嘩をやめてしまったらそれは果たして生物と言えるのか
逆に言えばAIが人知を超える時
人間は機械に滅ぼされ地球から人間はいなくなっているという事
つまり今何をすべきかと言うと人間は思考をやめアホになるべきである
そうアホの坂田こそ未来の救世主ネオなのである
>>681
そのご紹介のリンク先は、内容について、はっきりいって詰めが甘いです
すなわち、継承と委譲を区別できていません
そんな中途半端な理解で quita に掲載するとか、玉か石かどちらかといえば、石の部類でしょう、全然参考になりませんでした
そんな中途半端な内容の記事を掲載するあなたも同様と判断いたします
そのご紹介のリンク先は、内容について、はっきりいって詰めが甘いです
すなわち、継承と委譲を区別できていません
そんな中途半端な理解で quita に掲載するとか、玉か石かどちらかといえば、石の部類でしょう、全然参考になりませんでした
そんな中途半端な内容の記事を掲載するあなたも同様と判断いたします
688デフォルトの名無しさん (ワッチョイ df33-Fpyl)
2019/05/26(日) 15:46:43.76ID:aNhG7Lwu0 >>686
「継承」に必要な操作一式を委譲に基づいて提供できているなら継承できていると思うんだけど、
言語サポートを伴って暗黙的に機能しない限り「継承」と呼ぶべきではない、ということなの?
そこで明確に区別することにあんまり意義が見出せないんだけど、その定義どっか出典示せる?
「継承」に必要な操作一式を委譲に基づいて提供できているなら継承できていると思うんだけど、
言語サポートを伴って暗黙的に機能しない限り「継承」と呼ぶべきではない、ということなの?
そこで明確に区別することにあんまり意義が見出せないんだけど、その定義どっか出典示せる?
>>688
委譲による実装で継承を実現できているのなら、それは継承(の一形態)である、…@ という主張ですね
@は私にも理解できますが、委譲はダイヤモンド継承を回避できない欠点があるのでは、と考えています
「ダイヤモンド継承」については C++ の書籍には大概載っているかと、具体的な書籍名は探しておきます
委譲による実装で継承を実現できているのなら、それは継承(の一形態)である、…@ という主張ですね
@は私にも理解できますが、委譲はダイヤモンド継承を回避できない欠点があるのでは、と考えています
「ダイヤモンド継承」については C++ の書籍には大概載っているかと、具体的な書籍名は探しておきます
690デフォルトの名無しさん (ワッチョイ df59-eVvB)
2019/05/26(日) 16:00:20.28ID:Jdhtsrqd0 まあ継承なんてオブジェクト指向と関係ないからね
692デフォルトの名無しさん (ワッチョイ df33-Fpyl)
2019/05/26(日) 16:08:55.02ID:aNhG7Lwu0 >>689
ちょっと何言ってるかわからないな。
ダイアモンド継承の問題を「継承」で回避しているが委譲では回避できないであろう例を挙げてくれたら考える。
明確に区別しないことも理解できると言うなら「詰めが甘い」とか「中途半端」とか言ってたのは何なのか・・・。
ちょっと何言ってるかわからないな。
ダイアモンド継承の問題を「継承」で回避しているが委譲では回避できないであろう例を挙げてくれたら考える。
明確に区別しないことも理解できると言うなら「詰めが甘い」とか「中途半端」とか言ってたのは何なのか・・・。
693デフォルトの名無しさん (ワッチョイ df59-eVvB)
2019/05/26(日) 16:22:19.45ID:Jdhtsrqd0 >>691
なにって、言語を知りたいということ?
なにって、言語を知りたいということ?
694デフォルトの名無しさん (ワッチョイ a7da-n/qg)
2019/05/26(日) 16:37:44.23ID:vwTAovQx0 クラスベースのOOP言語ではクラスの継承は一般的だけどプロトタイプベースのOOP言語では継承の概念は存在しないよ
>>692
クラス A, B, C, D について、
A のメンバ変数を a とする、また
B->A(B は A を派生する)
C->A
D->B, C (多重継承)
において、これを委譲で実装すると、B.A.a と C.A.a が同じであるべきにもかかわらず二重にインスタンスとして生成されてしまうので、
継承で実装した D.a を、委譲で実装した D.B.a と同一視するか、D.C.a と同一視するか、また継承における D.a を更新した場合に委譲では D.B.a と D.C.a の両方を更新するコードを生成しなければならないのか、
等あいまいな部分がでてくる、これがダイヤモンド継承問題です
継承で実装すれば、C++ ではこれを仮想継承といいますが D.a の実態を一つに限定することができますし、D.B.a, D.C.a の両方を保存することもできます、つまりモデリングにおいて選択肢を準備できる
しかし委譲で実装すると D.a の実態を一つに限定することが不可能です、つまり選択肢を準備できません
以上より委譲で継承のすべてを代行できないため、委譲と継承を区別する必要が生じると考えます
ただし、多重継承を認めないのであれば、委譲と継承は同一視しても差し支えないと考えます
クラス A, B, C, D について、
A のメンバ変数を a とする、また
B->A(B は A を派生する)
C->A
D->B, C (多重継承)
において、これを委譲で実装すると、B.A.a と C.A.a が同じであるべきにもかかわらず二重にインスタンスとして生成されてしまうので、
継承で実装した D.a を、委譲で実装した D.B.a と同一視するか、D.C.a と同一視するか、また継承における D.a を更新した場合に委譲では D.B.a と D.C.a の両方を更新するコードを生成しなければならないのか、
等あいまいな部分がでてくる、これがダイヤモンド継承問題です
継承で実装すれば、C++ ではこれを仮想継承といいますが D.a の実態を一つに限定することができますし、D.B.a, D.C.a の両方を保存することもできます、つまりモデリングにおいて選択肢を準備できる
しかし委譲で実装すると D.a の実態を一つに限定することが不可能です、つまり選択肢を準備できません
以上より委譲で継承のすべてを代行できないため、委譲と継承を区別する必要が生じると考えます
ただし、多重継承を認めないのであれば、委譲と継承は同一視しても差し支えないと考えます
>>693-694
ふーん、インタプリタ JavaScript には継承はないのですか
ふーん、インタプリタ JavaScript には継承はないのですか
697デフォルトの名無しさん (ワッチョイ a7da-n/qg)
2019/05/26(日) 16:41:38.74ID:vwTAovQx0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国外務省局長 「ポケットに手を入れていたのは寒いから」 日本との局長級会談で [お断り★]
- 中国外務省局長 「ポケットに手を入れていたのは寒いから」 日本との局長級会談で ★2 [お断り★]
- 【速報】中国外務省報道官 高市首相発言撤回なければ「断固たる対抗措置」 ★3 [蚤の市★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★7 [ぐれ★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 ★3 [お断り★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 【ネトウヨの理想国家】中国、スペイ防止法発動、中国人民に対して日本人の通報を奨励 [419054184]
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★3
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★4
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★5
- エッヂ落ちた?
- 【緊急】水ダウひ避難所
