Thread View: pl.comp.lang.c
31 messages
31 total messages
Started by sektor
Fri, 13 Feb 1998 15:48
Kilka pytan do C++
Author: sektor
Date: Fri, 13 Feb 1998 15:48
Date: Fri, 13 Feb 1998 15:48
58 lines
3021 bytes
3021 bytes
Ostatnio przypomnialo mi sie kilka nietrywialnych pytan do C++.
1. Domyslny operator przypisania, jaki istnieje w kazdej klasie, powoduje
przepisanie calej struktury "pole po polu". Jezeli struktura taka zawiera
pola typow innych, niz scisle, nie zaleca sie wtedy tego stosowac, lecz
nalezy zdefiniowac wlasny operator przypisania. Moje pytanie dotyczy tego
standardowego operatora przypisania: Czy ow operator powoduje skopiowanie
obszaru pamieci jednej struktury w drugi, czy tez korzysta z operatorow
przypisania obowiazujacego dla kazdego z typow ? Jezeli np. mam cos takiego:
class Char
{
String name;
String title;
int hp;
... (itd., powiedzmy reszta pol jest typow scislych)
};
To jezeli dam:
Char ch;
...
Char vch = ch;
To czy zawartosc pol name i title zostanie skopiowana, czy tez wywola sie
operator przypisania z klasy String ? Gdyby bylo to zwykle kopiowanie, to
wtedy pole name.t z vch przyjeloby wartosc tego samego wskaznika (podwojne
odniesienie), a skutki destrukcji takiego obiektu chyba wszyscy znamy.
Pytam dlatego, ze wyjasnienia, na jakie sie natknalem w literaturze, wyjasnialy
skutki uzywania tego, gdy mamy pola wskaznikowe, a przypisanie wskaznika
wyglada... jak wyglada. Nie bylo jednak jasno okreslone, czy korzysta sie
jawnie z operatora przypisania, czy tez normalnie sie "hurtowo" kopiuje
(niektore komputery maja dodatkowe uklady do kopiowania obszarow pamieci,
tak tez nie wiadomo, czy kompilatory z tego czasem nie korzystaja).
Druga rzecz, jaka juz od dluzszego czasu probuje zrozumiec:
Do czego sluza operatory .* i ->* ? W literaturze sa wyroznione, jako
osobne operatory (a nie zlepek . i *, czy -> i *). Z tego, co widzialem,
wprowadzone zostaly dopiero w C++. Jezeli odwoluje sie do pola obiektu
to jest albo obiekt: ob.pole, albo wskaznik pob->pole, jezeli wyluskujemy
obiekt ze wskaznika, ktory jest polem, to jest *ob.pol (i odpowiednio
strzalka). Jakie jest wiec zastosowanie dla operatorow .* i ->* ?
Aha i jeszcze jedno. Czy da sie przeciazac wszystkie jednoparametrowe
operatory postfixowo (oczywiscie te, ktore sie nie dubluja z druargumentowymi)?
Czy tylko ++ i -- ?
Bede dzwieczny za odpowiedzi.
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Re: Kilka pytan do C++
Author: Maciej MOCHOL
Date: Fri, 13 Feb 1998 18:47
Date: Fri, 13 Feb 1998 18:47
40 lines
2098 bytes
2098 bytes
On 13 Feb 1998 sektor@mud.org.pl wrote: > To jezeli dam: > Char ch; > ... > Char vch = ch; > > To czy zawartosc pol name i title zostanie skopiowana, czy tez wywola sie > operator przypisania z klasy String ? Gdyby bylo to zwykle kopiowanie, to Sektorze, dziwne nieco to Twoje pytanie... Operator kopiowania jest jak konstruktor domyslny i copy, po prostu kompilator tworzy predefiniowany, jesli nie ma definicji. Domyslny kopiuje po chamsku (binarnie) zawartosc pol obiektu. Wiec jak masz tam jakies wskazniki, to dwa rozne obiekty beda wskazywaly na ten sam obszar pamieci. To jak sobie go przeciazysz to Twoja sprawa. Mozesz tam nawet printf umiescic. > Do czego sluza operatory .* i ->* ? W literaturze sa wyroznione, jako > osobne operatory (a nie zlepek . i *, czy -> i *). Z tego, co widzialem, Do tego zeby sobie stosowac wskazniki na metody. > Aha i jeszcze jedno. Czy da sie przeciazac wszystkie jednoparametrowe > operatory postfixowo (oczywiscie te, ktore sie nie dubluja z druargumentowymi)? > Czy tylko ++ i -- ? Postfixowo ? Nie kumam... W C++ mozna przeciazyc tylko te operatory ktore sa uzywane (z wyjatkiem kilku). Nie ma chyba innych niz --i, ++i. Reszte sie stosuje tak samo. pozdrawiam c. PS. Polecam Stroustrupa, lub jakas inna klasyke. -- Codematic code@beta.cku.pwr.wroc.pl.strasznie.mi.sie.podobaja mmochol@elka.pw.edu.pl.te.smieci.na.koncu.adresu.email http://home.elka.pw.edu.pl.i.www.rowniez/~mmochol
Re: Kilka pytan do C++
Author: Witold Przygoda
Date: Fri, 13 Feb 1998 19:28
Date: Fri, 13 Feb 1998 19:28
86 lines
3129 bytes
3129 bytes
sektor@mud.org.pl wrote:
>1. Domyslny operator przypisania, jaki istnieje w kazdej klasie, powoduje
>przepisanie calej struktury "pole po polu". Jezeli struktura taka zawiera
Najlepszym sposobem na nauke jest napisac sobie samemu przykladzik
i zobaczyc jak to chodzi. Poniewaz jednak nie napisales sobie
przykladziku, wiec napisalem go dla ciebie - skopiuj sobie kod ponizej
i skompiluj (g++ nazwa.cc -o runme ...czy co tam uzywasz :)
A potem popatrz co sie dzieje...
---------------------------------------------------
#include <iostream.h>
class maKota {
public:
int kotali;
maKota& operator=(const maKota& source) {
if (this == &source) return *this;
cout << "Uwaga! Ala klonuje kota numer " << source.kotali
<< "!!!\n";
kotali = source.kotali;
return *this;
}
};
class zwierzak {
public:
int ala;
maKota kot;
// ta klasa nie ma zdefiniowanego operatora= ale ma
// pole typu maKota
};
void main() {
cout << "*** Krotki kurs klonowania kotow ***\n";
zwierzak kotekBialy,kotekCzarny;
kotekBialy.ala = 1;
kotekBialy.kot.kotali = 11;
cout << "Oto bialy kotek Ali, a jego dane to: "
<< kotekBialy.ala << ", " << kotekBialy.kot.kotali << "\n";
kotekCzarny = kotekBialy;
cout << "...teraz kotek czarny ma dane: "
<< kotekCzarny.ala << ", " << kotekCzarny.kot.kotali << "\n";
}
-----------------------------------------------------------
>strzalka). Jakie jest wiec zastosowanie dla operatorow .* i ->* ?
Operatory, ktore moga byc przeladowane w c++ to
+ - * / % & ^ | ~ ! = < > += -= *= /= %=
^= &= |= << >> >>= <<= == != <= >= && || ++ --
, ->* -> new delete () []
Jesli cie dobrze rozumiem to chodzi ci o operator ->*
Ma on zastosowanie we wskaznikach do skladowych obiektow
(np. chcesz pokazywac wskaznikiem na obiekty znajdujace sie
w twojej klasie) innymi slowy jesli mojaDana to obiekt twojej jakiejs
klasy, to mozesz albo mojaDana.*wskaznik_na_skladnik
albo, majac wskaznik na mojaDana to samo przy uzyciu
powyzszego:
wskazMojaDana->*wskaznik_na_skladnik
Ja sie to je, mozesz sobie poczytac np. w ksiazce J.Grebosza
Symfonia C++ tom II rozdzial 16.Wskaznik do skladnikow klasy
albo w dowolnej ksiazce na temat j.w.
>Aha i jeszcze jedno. Czy da sie przeciazac wszystkie jednoparametrowe
>operatory postfixowo (oczywiscie te, ktore sie nie dubluja z druargumentowymi)?
>Czy tylko ++ i -- ?
Jak wyzej, rozdzial. 18.
pozdr.wp
Re: Kilka pytan do C++
Author: Wojtek Surowka
Date: Mon, 16 Feb 1998 11:10
Date: Mon, 16 Feb 1998 11:10
21 lines
1324 bytes
1324 bytes
sektor@mud.org.pl wrote in message <34e46b5e.0@news.tpnet.pl>... >To czy zawartosc pol name i title zostanie skopiowana, czy tez wywola sie >operator przypisania z klasy String ? Zostanie wywolany operator przypisania z klasy String. Operator przypisania generowany automatycznie wywoluje operatory przypisania dla wszystkich pol (oczywiscie moze to zostac w koncu zoptymalizowane do jednego memcpy, ale to juz optymalizacja). >Aha i jeszcze jedno. Czy da sie przeciazac wszystkie jednoparametrowe >operatory postfixowo (oczywiscie te, ktore sie nie dubluja z druargumentowymi)? >Czy tylko ++ i -- ? Tylko ++ i --. Ogolna zasada: przeciazanie operatorow nie zmienia skladni jezyka. Pozdrowienia i milego C++owania. WS
Re: Kilka pytan do C++
Author: Norbert Cegielka
Date: Tue, 17 Feb 1998 13:48
Date: Tue, 17 Feb 1998 13:48
14 lines
1224 bytes
1224 bytes
sektor@mud.org.pl wrote: > Ostatnio przypomnialo mi sie kilka nietrywialnych pytan do C++. Poglądy i opinie wyrażane przez Pana Michała Małeckiego są jego prywatnymi i w żadnym stopniu nie reprezentują użytkowników domeny kis.p.lodz.pl. My niżej podpisani adminstratorzy tej domeny stanowczo odcinamy się od teorii wygłaszanych przez Pana Michała Małeckiego, w tym poście, w poprzednich i wszelkich następnych, w tej grupie dyskusyjnej jak i w inych. Nie odpowiadamy za szkody intelektualne i ew. materialne powstałe w wyniku działalności wyżej wymienionego użytkownika. Norbert Cegiełka Tomasz Jóźwiak Maciej Leśniewski
Re: Kilka pytan do C++
Author: Karpierz
Date: Tue, 17 Feb 1998 14:19
Date: Tue, 17 Feb 1998 14:19
22 lines
1590 bytes
1590 bytes
Norbert Cegielka <cegla@kis.p.lodz.pl> napisal
[...]
> Poglądy i opinie wyrażane przez Pana Michała Małeckiego są jego
> prywatnymi i w żadnym stopniu nie reprezentują użytkowników
> domeny kis.p.lodz.pl. My niżej podpisani adminstratorzy tej domeny
> stanowczo odcinamy się od teorii wygłaszanych przez Pana
> Michała Małeckiego, w tym poście, w poprzednich i wszelkich
> następnych, w tej grupie dyskusyjnej jak i w inych. Nie
> odpowiadamy za szkody intelektualne i ew. materialne
=============
> powstałe w wyniku działalności wyżej wymienionego użytkownika.
>
> Norbert Cegiełka
> Tomasz Jóźwiak
> Maciej Leśniewski
No dobrze... Intelektualne szkody jakos przezyje, ale kto
mi zaplaci za kilka rozwalonych w drobny mak klawiatur i
monitorow (15'' !) do czego w/w MM w walny sposob sie
przyczynil swoimi listami ? :)
A.K.
Re: Kilka pytan do C++
Author: Michal Malceki
Date: Mon, 23 Feb 1998 13:25
Date: Mon, 23 Feb 1998 13:25
33 lines
2071 bytes
2071 bytes
W poprzednim odcinku Wojtek Surowka <WojtekS@aldec.katowice.pl> naskrobal:
: sektor@mud.org.pl wrote in message <34e46b5e.0@news.tpnet.pl>...
:>To czy zawartosc pol name i title zostanie skopiowana, czy tez wywola sie
:>operator przypisania z klasy String ?
: Zostanie wywolany operator przypisania z klasy String. Operator przypisania
: generowany automatycznie wywoluje operatory przypisania dla wszystkich pol
: (oczywiscie moze to zostac w koncu zoptymalizowane do jednego memcpy, ale to
: juz optymalizacja).
Tak wlasnie podejrzewalem! Tylko - z tego, co zauwazylem - nikt poza toba
nie odpowiedzial w ten sposob. Jedyny babol z wywolywaniem operatorow jest
w 'switch' - fajnie, gdyby korzystal z operatora == (ale moze kiedys sie
to zmieni).
:>Aha i jeszcze jedno. Czy da sie przeciazac wszystkie jednoparametrowe
:>operatory postfixowo (oczywiscie te, ktore sie nie dubluja z
: druargumentowymi)?
:>Czy tylko ++ i -- ?
: Tylko ++ i --. Ogolna zasada: przeciazanie operatorow nie zmienia skladni
: jezyka.
Ach! Sluszna uwaga. Tak wlasnie myslalem, ale wolalem sie upewnic.
Jeszcze raz dziekuje za odpowiedzi i ... 'nawzajem' :-)
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Re: Kilka pytan do C++
Author: Michal Malceki
Date: Mon, 23 Feb 1998 13:27
Date: Mon, 23 Feb 1998 13:27
21 lines
1678 bytes
1678 bytes
W poprzednim odcinku Norbert Cegielka <cegla@kis.p.lodz.pl> naskrobal:
: Poglądy i opinie wyrażane przez Pana Michała Małeckiego są jego prywatnymi
: i w żadnym stopniu nie reprezentują użytkowników domeny kis.p.lodz.pl.
Nigdy nikt nie twierdzil inaczej.
: My niżej podpisani adminstratorzy tej domeny stanowczo odcinamy się
: od teorii wygłaszanych przez Pana Michała Małeckiego, w tym poście,
: w poprzednich i wszelkich następnych, w tej grupie dyskusyjnej jak
: i w inych. Nie odpowiadamy za szkody intelektualne i ew. materialne
: powstałe w wyniku działalności wyżej wymienionego użytkownika.
Podobnie nie odpowiadam za to, co moglbym przez pomylke zostawic na dlugo
bez odpowiedzi. Zycze moim administratorom dobrego uzytkownika.
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Re: Kilka pytan do C++
Author: Michal Malceki
Date: Mon, 23 Feb 1998 13:29
Date: Mon, 23 Feb 1998 13:29
11 lines
1032 bytes
1032 bytes
W poprzednim odcinku sektor@mud.org.pl naskrobal, co naskrobal.
Mam za to jeszcze jedno pytanie. Czy metoda moze usunac obiekt (delete) ?
Tzn., czy jej wolno.
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Re: Kilka pytan do C++
Author: Piotr Piatkowski
Date: Mon, 23 Feb 1998 14:34
Date: Mon, 23 Feb 1998 14:34
12 lines
1219 bytes
1219 bytes
Michal Malceki <sektor@mud.org.pl> wrote: : W poprzednim odcinku sektor@mud.org.pl naskrobal, co naskrobal. : Mam za to jeszcze jedno pytanie. Czy metoda moze usunac obiekt (delete) ? : Tzn., czy jej wolno. Nie wydaje mi się żeby były ku temu jakieś przeciwskazania, poza tym żeby uważać - od momentu takiego usunięcia nie wolno użyć this, czyli żadnej zmiennej składowej, ani żadnej innej metody niestatycznej. -- Piotr Piątkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Re: Kilka pytan do C++
Author: Michal Malceki
Date: Mon, 23 Feb 1998 16:06
Date: Mon, 23 Feb 1998 16:06
22 lines
1693 bytes
1693 bytes
W poprzednim odcinku Piotr Piatkowski <kompas@galaxy.uci.agh.edu.pl> naskrobal:
: Michal Malceki <sektor@mud.org.pl> wrote:
: : W poprzednim odcinku sektor@mud.org.pl naskrobal, co naskrobal.
: : Mam za to jeszcze jedno pytanie. Czy metoda moze usunac obiekt (delete) ?
: : Tzn., czy jej wolno.
: Nie wydaje mi się żeby były ku temu jakieś przeciwskazania, poza tym
: żeby uważać - od momentu takiego usunięcia nie wolno użyć this, czyli
: żadnej zmiennej składowej, ani żadnej innej metody niestatycznej.
Dzieki, ale jeszcze poprosze o wyjasnienie: czy metoda, ktora takie cos robi
musi byc statyczna, czy tez po instrukcji delete nie moze byc wywolan
niestatycznych ? Metoda, w ktorej chce to zastosowac, miala byc wirtualna.
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Re: Kilka pytan do C++
Author: Maciej MOCHOL
Date: Mon, 23 Feb 1998 16:37
Date: Mon, 23 Feb 1998 16:37
19 lines
1473 bytes
1473 bytes
On 23 Feb 1998, Piotr Piatkowski wrote: > Nie wydaje mi się żeby były ku temu jakieś przeciwskazania, poza tym > żeby uważać - od momentu takiego usunięcia nie wolno użyć this, czyli > żadnej zmiennej składowej, ani żadnej innej metody niestatycznej. Moim zdaniem nie wolno. Mozna oczywiscie usunac (delete) jakis inny obiekt, ale nie swoj wlasny. Mysle ze to by bylo bez sensu, bo wtedy wywolywany jest destruktor, a jesli wywolanie bylo z metody wirtualnej ? Inna sprawa, ze takie cos w wiekszosci implementacji pojdzie, pod warunkami takimi jak powiedzial przedmowca. -- Codematic code@beta.cku.pwr.wroc.pl.strasznie.mi.sie.podobaja mmochol@elka.pw.edu.pl.te.smieci.na.koncu.adresu.email http://home.elka.pw.edu.pl.i.www.rowniez/~mmochol
Re: Kilka pytan do C++
Author: Piotr Piatkowski
Date: Tue, 24 Feb 1998 11:44
Date: Tue, 24 Feb 1998 11:44
18 lines
1589 bytes
1589 bytes
Maciej MOCHOL <mmochol@elka.pw.edu.pl> wrote: : On 23 Feb 1998, Piotr Piatkowski wrote: :> Nie wydaje mi się żeby były ku temu jakieś przeciwskazania, poza tym :> żeby uważać - od momentu takiego usunięcia nie wolno użyć this, czyli :> żadnej zmiennej składowej, ani żadnej innej metody niestatycznej. : Moim zdaniem nie wolno. Mozna oczywiscie usunac (delete) jakis inny : obiekt, ale nie swoj wlasny. Mysle ze to by bylo bez sensu, bo wtedy : wywolywany jest destruktor, a jesli wywolanie bylo z metody : wirtualnej ? No dobrze, ale destruktor jest wołany *przed* zwolnieniem pamięci, więc w czym problem? I nie rozumiem na czym polega problem przy metodzie wirtualnej? -- Piotr Piątkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Re: Kilka pytan do C++
Author: Piotr Piatkowski
Date: Tue, 24 Feb 1998 11:46
Date: Tue, 24 Feb 1998 11:46
24 lines
1947 bytes
1947 bytes
Michal Malceki <sektor@mud.org.pl> wrote: : W poprzednim odcinku Piotr Piatkowski <kompas@galaxy.uci.agh.edu.pl> naskrobal: : : Michal Malceki <sektor@mud.org.pl> wrote: : : : W poprzednim odcinku sektor@mud.org.pl naskrobal, co naskrobal. : : : Mam za to jeszcze jedno pytanie. Czy metoda moze usunac obiekt (delete) ? : : : Tzn., czy jej wolno. : : Nie wydaje mi się żeby były ku temu jakieś przeciwskazania, poza tym : : żeby uważać - od momentu takiego usunięcia nie wolno użyć this, czyli : : żadnej zmiennej składowej, ani żadnej innej metody niestatycznej. : Dzieki, ale jeszcze poprosze o wyjasnienie: czy metoda, ktora takie cos robi : musi byc statyczna, czy tez po instrukcji delete nie moze byc wywolan : niestatycznych ? Metoda, w ktorej chce to zastosowac, miala byc wirtualna. Oczywiście to co pisałem odnosiło się do metody dynamicznej. W metodzie statycznej w ogóle nie ma takiego problemu bo nie ma wskaźnika this - więc metoda statyczna nie może skasować "własnego" obiektu bo takowy nie istnieje. A skasowanie innego obiektu to już czynność zupełnie "normalna". -- Piotr Piątkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Re: Kilka pytan do C++
Author: Michal Malceki
Date: Thu, 26 Feb 1998 19:49
Date: Thu, 26 Feb 1998 19:49
35 lines
2256 bytes
2256 bytes
W poprzednim odcinku Piotr Piatkowski <kompas@galaxy.uci.agh.edu.pl> naskrobal:
: : Dzieki, ale jeszcze poprosze o wyjasnienie: czy metoda, ktora takie cos robi
: : musi byc statyczna, czy tez po instrukcji delete nie moze byc wywolan
: : niestatycznych ? Metoda, w ktorej chce to zastosowac, miala byc wirtualna.
: Oczywiście to co pisałem odnosiło się do metody dynamicznej. W
: metodzie statycznej w ogóle nie ma takiego problemu bo nie ma
: wskaźnika this - więc metoda statyczna nie może skasować "własnego"
: obiektu bo takowy nie istnieje. A skasowanie innego obiektu to już
: czynność zupełnie "normalna".
Oki, ale w zwiazku z tym jeszcze jedna rzecz mi sie przypomniala.
Czy w metodzie statycznej jest niedostepny wskaznik this, czy tez
w przypadku wywolania nie na rzecz obiektu jest on rowny zero ?
Aha i jeszcze jedno, jesli juz jestesmy przy 'this'. W helpie Borland C++ 3.1
na temat this, znalazlem takie oto zdanie:
Use of "this" is now obsolete. A better,
safer, and more general technique is to
define a member function called
x::operator new
instead.
Przyznam, ze nic z tego nie rozumiem... co ma operator new do wskaznika
this ? I dlaczego niby jest on przestarzaly ?
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Re: Kilka pytan do C++
Author: Karpierz
Date: Thu, 26 Feb 1998 20:15
Date: Thu, 26 Feb 1998 20:15
32 lines
1922 bytes
1922 bytes
Michal Malceki <sektor@mud.org.pl> napisal [...] > Oki, ale w zwiazku z tym jeszcze jedna rzecz mi sie przypomniala. > Czy w metodzie statycznej jest niedostepny wskaznik this, czy tez > w przypadku wywolania nie na rzecz obiektu jest on rowny zero ? Nie jest dostepny wskaznik this. > Aha i jeszcze jedno, jesli juz jestesmy przy 'this'. W helpie > Borland C++ 3.1 na temat this, znalazlem takie oto zdanie: > > Use of "this" is now obsolete. A better, safer, and more > general technique is to define a member function called > > x::operator new > > instead. > > Przyznam, ze nic z tego nie rozumiem... co ma operator new do > wskaznika this ? I dlaczego niby jest on przestarzaly ? Chodzi tu nie o wskaznik this ale o przydzielanie pamieci dla obiektu metoda przypisania do this. Ten sposob byl stosowany gdy jeszcze nie bylo mozliwe definiowanie operatora new dla klasy. Szczegolow juz nie pamietam, gdyz to bylo jeszcze w czasach CFront 2.0, czyli ponad 5 lat temu napewno. -- Pozdrawiam Adam Karpierz mailto:karpierz@intertele.pl http://www.intertele.pl/users/karpierz
Re: Kilka pytan do C++
Author: Michal Malceki
Date: Tue, 03 Mar 1998 17:13
Date: Tue, 03 Mar 1998 17:13
21 lines
1882 bytes
1882 bytes
W poprzednim odcinku Karpierz <karpierz@inter.intertele.pl> naskrobal:
: Chodzi tu nie o wskaznik this ale o przydzielanie pamieci dla
: obiektu metoda przypisania do this.
: Ten sposob byl stosowany gdy jeszcze nie bylo mozliwe
: definiowanie operatora new dla klasy.
: Szczegolow juz nie pamietam, gdyz to bylo jeszcze w czasach
: CFront 2.0, czyli ponad 5 lat temu napewno.
Dziekuje, wlasnie owa watpliwosc wyjasnila mi literatura (Bjarne Stroustrup:
Projektowanie i rozwoj jezyka C++). Szkoda, ze ci od helpa w tym smiesznym
kompilatorze nie powiedzieli, W JAKIM UZYCIU jest on przestarzaly. Najwyrazniej
uwazali, ze tylko do konstruowania obiektow bedzie sie go uzywac (zreszta,
z tego co slyszalem, kompilator ten byl pisany w turbo paskalu, wiec taka
informacja tez mnie nie zdziwi).
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Re: Kilka pytan do C++
Author: Karpierz
Date: Tue, 03 Mar 1998 19:19
Date: Tue, 03 Mar 1998 19:19
26 lines
2093 bytes
2093 bytes
Michal Malceki <sektor@mud.org.pl> napisal [...] > Dziekuje, wlasnie owa watpliwosc wyjasnila mi literatura (Bjarne > Stroustrup: Projektowanie i rozwoj jezyka C++). Szkoda, ze ci > od helpa w tym smiesznym kompilatorze nie powiedzieli... Nie wydaje mi sie a raczej jestem przekonany ze Borland C++ a zwlaszcza jego nastepca C++ Builder smiesznym kompilatorem nie jest mimo swych brakow i niedociagniec (ktory kompilator ich nie ma...). Co wiecej, jest bardzo przyjemny w uzyciu wiec dla poczatkujacych i uczacych sie dopiero, a wiec jak najbardziej dla Ciebie idealnie sie nadaje. Tylko zamiast helpa trzeba czytac podreczniki i dokumentacje. > Najwyrazniej uwazali, ze tylko do konstruowania obiektow bedzie > sie go uzywac (zreszta, z tego co slyszalem, kompilator ten byl pisany > w turbo paskalu, wiec taka informacja tez mnie nie zdziwi). Tego juz zupelnie nie rozumiem... :(. Jakie ma znaczenie _w czym_ jest pisany kompilator C++ ? Nie ma najmniejszego. No moze jedynie wplywac na szybkosc kompilatora, natomiast w zadnej mierze na jego poprawnosc czy jakosc generowanego kodu. -- Pozdrawiam Adam Karpierz mailto:karpierz@intertele.pl http://www.intertele.pl/users/karpierz
Re: Kilka pytan do C++
Author: Michal Malceki
Date: Wed, 04 Mar 1998 09:04
Date: Wed, 04 Mar 1998 09:04
54 lines
4229 bytes
4229 bytes
W poprzednim odcinku Karpierz <karpierz@inter.intertele.pl> naskrobal:
: Nie wydaje mi sie a raczej jestem przekonany ze Borland C++ a
: zwlaszcza jego nastepca C++ Builder smiesznym kompilatorem nie
: jest mimo swych brakow i niedociagniec (ktory kompilator ich nie ma...).
Ale roznie jest z iloscia tych niedociagniec, wystarczy, ze porowna pan sobie
ich ilosc w kompilatorach Borlanda (zwlaszcza 3.1, ostatniej wersji pod dosa)
i GNU C++, czy WatCom'a. Borland C++ 3.1 akurat ma sporo niedociagniec
i bledow (oczywiscie nie uwazam za bledy rzeczy, ktorych w tym kompilatorze
nie ma ze wzgledu na to, z ktora wersja Cfronta jest kompatybilny).
Zeby bylo zlosliwiej, kompilator ten przynajmniej debuguje programy w C++
(czego nie mozna powiedziec o gcc 2.7.2 na systemach uzywajacych formatu
debugowania DWARF). A przesiasc sie na niego z powrotem JUZ nie moge, bo jest
przestarzaly (tzn. wielu rzeczy, ktore sa u mnie w powszechnym uzyciu, nie
dopuszcza). Mam tylko nadzieje, ze gcc 2.8.0 nie ma juz tego niedopatrzenia.
: Co wiecej, jest bardzo przyjemny w uzyciu wiec dla poczatkujacych
: i uczacych sie dopiero, a wiec jak najbardziej dla Ciebie idealnie sie
: nadaje. Tylko zamiast helpa trzeba czytac podreczniki i dokumentacje.
Jest przyziemny, ale, niestety, przestarzaly. Do tego czasu juz standard
powstal. I zeby nie bylo niedomowien - nie chodzilo mi o wersje 4.5, 5.0,
czy Buildera, tylko o 3.1 (bo w tym helpie to wyczytalem). Jezeli zas chodzi
o helpy, to wiem, ze nalezy czytac literature, ale w helpach powinny byc jakies
sensowne i logiczne wyjasnienia, jak np. w man. Szkoda tylko, ze C++ jest na
UNIX'ie jezykiem drugiej kategorii i nie dosc, ze mi gcc nie pozwala na debug,
to jeszcze nie ma do niego mana (przynajmniej u mnie).
: Tego juz zupelnie nie rozumiem... :(. Jakie ma znaczenie _w czym_
: jest pisany kompilator C++ ? Nie ma najmniejszego.
Dla samego kompilatora nie ma, zgoda! Tylko po prostu sam wybor jezyka
programowania czesciowo swiadczy o pewnych rzeczach. Bjarne Struostrup
pisal, ze pierwszy kompilator C++ byl zaprojektowany w C++. Nie wiem, jak
on to zrobil, ale w kazdym razie nie pisal go ani w pascalu, ani w Simuli,
ani w zadnym innym jezyku. Dla Borlanda role gralo pewnie to, ze mieli gotowy
edytor napisany dla turbo paskala, wiec rzeczywiscie nie mialo sensu pisanie
go od nowa w C++. Tylko po prostu oznacza to, ze programisci z borlanda
najprawdopodoniej zaczeli od turbo paskala, bo innego wytlumaczenia nie widze.
Zreszta nie ma czego tu poddawac w watpliwosc, przeciez Borland C++ Builder
powstal sporo czasu po wypuszczeniu Delphi, wiec wyglada to jakb Borland
stwierdzil 'no trudno, juz scierpie, wypuszcze cos takiego dla C++'. Mam
po prostu wrazenie, ze cala filozofie "zyciowa" Borlanda stanowi turbo
pascal, a kompilatory C++ pisza tylko ze wzgledow komercyjnych. Z podobnych
przyczyn musial sportowac biblioteke MFC, przeciez.
Ech, rozgadalem sie bez sensu, jak zwykle zreszta.
Pozdrawiam,
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Re: Kilka pytan do C++
Author: Karpierz
Date: Wed, 04 Mar 1998 10:34
Date: Wed, 04 Mar 1998 10:34
36 lines
2278 bytes
2278 bytes
Michal Malceki <sektor@mud.org.pl> napisal [...] > Ale roznie jest z iloscia tych niedociagniec, wystarczy, ze porowna pan sobie > ich ilosc w kompilatorach Borlanda (zwlaszcza 3.1, ostatniej wersji pod dosa) > i GNU C++, czy WatCom'a. Borland C++ 3.1 akurat ma sporo niedociagniec > i bledow (oczywiscie nie uwazam za bledy rzeczy, ktorych w tym kompilatorze > nie ma ze wzgledu na to, z ktora wersja Cfronta jest kompatybilny). A zeby bylo konkretniej, jakie to bledy i niedociagniecia ? Jesli chcesz porownywac to porownaj sobie BC 3.1 (1992r) a owczesnymi wersjami MS C++ a nawet z Watcomem. W sensie mozliwosci i bledow. > Zeby bylo zlosliwiej, kompilator ten przynajmniej debuguje programy w C++ > (czego nie mozna powiedziec o gcc 2.7.2 na systemach uzywajacych formatu > debugowania DWARF). A przesiasc sie na niego z powrotem JUZ nie moge, bo jest > przestarzaly (tzn. wielu rzeczy, ktore sa u mnie w powszechnym uzyciu, nie > dopuszcza). Konkretnie o jakie rzeczy chodzi ? [...] >Szkoda tylko, ze C++ jest na UNIX'ie jezykiem drugiej kategorii Eeee , bez przesady. Jezyk jak jezyk. Sa na Unixie od niego o wiele gorsze jezyki ale rowniez o wiele lepsze. Jak to na Unixie.. -- Pozdrawiam Adam Karpierz mailto:karpierz@intertele.pl http://www.intertele.pl/users/karpierz
Re: Kilka pytan do C++
Author: Michal Malceki
Date: Wed, 04 Mar 1998 11:20
Date: Wed, 04 Mar 1998 11:20
47 lines
2841 bytes
2841 bytes
W poprzednim odcinku Karpierz <karpierz@inter.intertele.pl> naskrobal:
: A zeby bylo konkretniej, jakie to bledy i niedociagniecia ?
: Jesli chcesz porownywac to porownaj sobie BC 3.1 (1992r) a owczesnymi
: wersjami MS C++ a nawet z Watcomem. W sensie mozliwosci i bledow.
Mozliwe, ja panu z pamieci tych bledow nie zreferuje, niestety jest ich
sporo i sa dosc uciazliwe. Oczywiscie nie tyylko bledy, rowniez niektore
glupie uwagi, jak np:
while ( t = strchr( t, ' ' ) )
Borland: Possibly incorrect assignment
GNU: Suggested parentheses around expression (moze troche inaczej)
po ujeciu wyrazenia w dodatkowe nawiasy GNU juz nic nie mowi, a Borland
dalej swoje.
:> Zeby bylo zlosliwiej, kompilator ten przynajmniej debuguje programy w C++
:> (czego nie mozna powiedziec o gcc 2.7.2 na systemach uzywajacych formatu
:> debugowania DWARF). A przesiasc sie na niego z powrotem JUZ nie moge, bo
: jest
:> przestarzaly (tzn. wielu rzeczy, ktore sa u mnie w powszechnym uzyciu,
: nie
:> dopuszcza).
: Konkretnie o jakie rzeczy chodzi ?
W podobny sposob, z pamieci panu nie powiem. Ale jako przyklad moge podac
deklaracje tablicy z wymiarem podanum jako zmienna.
:>Szkoda tylko, ze C++ jest na UNIX'ie jezykiem drugiej kategorii
: Eeee , bez przesady. Jezyk jak jezyk. Sa na Unixie od niego o wiele gorsze
: jezyki ale rowniez o wiele lepsze. Jak to na Unixie..
W UNIX'ie C jest jezykiem uprzywilejowanym, a moim zdaniem C++ powinien byc
tak samo uprzywilejowany, niestety, jest tak jak wiele innych jezykow,
jezykiem drugiej kategorii.
Pozdrawiam,
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Re: Kilka pytan do C++
Author: Karpierz
Date: Wed, 04 Mar 1998 11:54
Date: Wed, 04 Mar 1998 11:54
69 lines
3651 bytes
3651 bytes
Michal Malceki <sektor@mud.org.pl> napisal > W poprzednim odcinku Karpierz <karpierz@inter.intertele.pl> > naskrobal: > : A zeby bylo konkretniej, jakie to bledy i niedociagniecia ? > : Jesli chcesz porownywac to porownaj sobie BC 3.1 (1992r) a owczesnymi > : wersjami MS C++ a nawet z Watcomem. W sensie mozliwosci i bledow. > Mozliwe, ja panu z pamieci tych bledow nie zreferuje, niestety jest ich > sporo i sa dosc uciazliwe. Jest jedna dobra zasada w kazdej dyskusji. Jak sie nie ma dowodow na poparcie swych tez to nie nalezy wypowiadac kategorycznych pogladow bo mozna palnac glupstwo co niniejszym uczyniles. Juz lepiej milczec. Z powazniejszych rzeczy to BC3.1 nie posiadal jedynie obslugi wyjatkow, /ale inne kompilatory tez../ ale.. w 92 roku to byla nowosc i nie wyksztalcil sie jeszcze niepisany standard wyjatkow dla C++. > Oczywiscie nie tyylko bledy, rowniez niektore > glupie uwagi, jak np: > > while ( t = strchr( t, ' ' ) ) > > Borland: Possibly incorrect assignment > GNU: Suggested parentheses around expression (moze troche inaczej) > > po ujeciu wyrazenia w dodatkowe nawiasy GNU juz nic nie mowi, a Borland > dalej swoje. Kazdy lubi to co lubi. Czy zastosowanie nawiasow wyklucza mozliwosc popelnienia bledu = zamiast == ?. To nie jest argument. To jest kosmetyka a nie wada kompilatora. [...] > : jest przestarzaly (tzn. wielu rzeczy, ktore sa u mnie w > : powszechnym uzyciu nie dopuszcza). > > : Konkretnie o jakie rzeczy chodzi ? > > W podobny sposob, z pamieci panu nie powiem. Nie rozumiem ... Nie potrafisz wymienic z pamieci rzeczy, ktore _sa u Ciebie w powszechnym uzyciu_ a ktorych brak przeszkadza(l) Ci w uzywaniu BC++ ??? hm... > Ale jako przyklad moge podac deklaracje tablicy z wymiarem > podanum jako zmienna. I bardzo dobrze ze nie dopuszcza. Nie jest to konstrukcja dopuszczalna w raporcie C/C++ tak samo jak i inne przydatne operatory >? i <?. Sa to rzeczy specyficzne dla GCC. A wiec diabli biora przenosnosc kodu. Mozna miec zal lub wdziecznosc (do wyboru) do autorow raportu ale nie do kompilatora ze ich nie implementuje. > :>Szkoda tylko, ze C++ jest na UNIX'ie jezykiem drugiej kategorii > > : Eeee , bez przesady. Jezyk jak jezyk. Sa na Unixie od niego o wiele gorsze > : jezyki ale rowniez o wiele lepsze. Jak to na Unixie.. > > W UNIX'ie C jest jezykiem uprzywilejowanym, a moim zdaniem C++ > powinien byc tak samo uprzywilejowany a dlaczego powinien ? -- Pozdrawiam Adam Karpierz mailto:karpierz@intertele.pl http://www.intertele.pl/users/karpierz
Re: Kilka pytan do C++
Author: Karpierz
Date: Wed, 04 Mar 1998 12:06
Date: Wed, 04 Mar 1998 12:06
18 lines
1723 bytes
1723 bytes
Jeszcze jedno. Nie przepadam za Pan-owaniem mi. Szczegolnie na newsach. Bez wzgledu na ew. roznice wieku, doswiadczenia itd. itp. Mysle ze niepotrzebnie wplywa to niekiedy na dyskusje bo podswiadomie ustanawia zbedny a nawet szkodliwy rodzaj hierarchii zaciemniajacy czesto argumentacje merytoryczna. No bo jak Pan to nie moze sie mylic :) hehe albo: jak Pan to zapewne "dziadek" nie na czasie, co on tam wie :) Nic bardziej blednego niz obie te skrajnosci... Liczyc sie powinny wylacznie argumenty merytoryczne. Dlatego dla Ciebie i dla wszystkich jestem Adam -- Pozdrawiam Adam Karpierz mailto:karpierz@intertele.pl http://www.intertele.pl/users/karpierz
Re: Kilka pytan do C++
Author: Krzysztof G. Baranowski
Date: Wed, 04 Mar 1998 12:25
Date: Wed, 04 Mar 1998 12:25
13 lines
1787 bytes
1787 bytes
>W UNIX'ie C jest jezykiem uprzywilejowanym, a moim zdaniem C++ powinien byc >tak samo uprzywilejowany, niestety, jest tak jak wiele innych jezykow, >jezykiem drugiej kategorii. To jest raczej zwiazane z historia powstania Unixa, takze nie mozna miec do nikogo z tego tytulu pretensji. Zreszta na Unixa dostepne sa kompilatory/interpretery mnostwa jezykow: C, C++ ,asm, pascal, perl, python, tcl, casl itd., wiec wybor jest duzy. Kris -- Krzysztof G. Baranowski - Prezes Klubu Nieszkodliwych Manjaków "Jakie to ma znaczenie??? Wy wiecie swoje, a my mamy rację..." http://www.knm.org.pl/ <prezes@manjak.knm.org.pl>
Re: Kilka pytan do C++
Author: Maciej MOCHOL
Date: Wed, 04 Mar 1998 12:43
Date: Wed, 04 Mar 1998 12:43
16 lines
1621 bytes
1621 bytes
On 4 Mar 1998, Karpierz wrote: > > W UNIX'ie C jest jezykiem uprzywilejowanym, a moim zdaniem C++ > > powinien byc tak samo uprzywilejowany > > a dlaczego powinien ? Eeee tam, KDE i Qt sa cale w C++, a dzialaja, sa przenaszalne, itd. Przeciez nie kazdy musi uzywac zaglebionych templates, albo jakichs chorych typecastow. Bo i po co. -- Codematic code@beta.cku.pwr.wroc.pl.strasznie.mi.sie.podobaja mmochol@elka.pw.edu.pl.te.smieci.na.koncu.adresu.email http://home.elka.pw.edu.pl.i.www.rowniez/~mmochol
Re: Kilka pytan do C++
Author: Sektor van Skijlen
Date: Wed, 04 Mar 1998 15:38
Date: Wed, 04 Mar 1998 15:38
124 lines
6214 bytes
6214 bytes
W poprzednim odcinku Karpierz <karpierz@inter.intertele.pl> naskrobal:
: Michal Malceki <sektor@mud.org.pl> napisal
:> Mozliwe, ja panu z pamieci tych bledow nie zreferuje, niestety jest ich
:> sporo i sa dosc uciazliwe.
: Jest jedna dobra zasada w kazdej dyskusji. Jak sie nie ma dowodow
: na poparcie swych tez to nie nalezy wypowiadac kategorycznych
: pogladow bo mozna palnac glupstwo co niniejszym uczyniles.
Napisalem, co uwazam, po prostu. Nie natykalem sie co prawda na owe bledy
czesto, ale niestety nie mam takiej pamieci, zeby teraz pamietac dokladnie
wszystko, co wowczas zaobserwowalem. Ostatni raz uzywalem tego kompilatora
dwa miesiace temu, co sie jednak nie liczy (bo za krotko), a wczesniej to
moze dwa lata temu. Dlatego wlasnie pamieci mnie zawodzi. Niech panu bedzie,
ze nie mam zadnych dowodow na to, jakie bledy sa w BC 3.1, bo mnie sie nie chce
na nowo go teraz odpalac i ogladac, zeby sobie to przypomniec (nie jestem
masochista).
: Z powazniejszych rzeczy to BC3.1 nie posiadal jedynie obslugi wyjatkow,
: /ale inne kompilatory tez../ ale.. w 92 roku to byla nowosc i nie
: wyksztalcil
: sie jeszcze niepisany standard wyjatkow dla C++.
To jest akurat cos, co nie zostalo dodane ze wzgledu na to, z czym BC 3.1
jest kompatybilny i o tym mowilem, ze nie uwazam za blad.
:> glupie uwagi, jak np:
[...]
:> while ( t = strchr( t, ' ' ) )
:>
:> Borland: Possibly incorrect assignment
: Kazdy lubi to co lubi. Czy zastosowanie nawiasow wyklucza mozliwosc
: popelnienia bledu = zamiast == ?.
: To nie jest argument. To jest kosmetyka a nie wada kompilatora.
Nie powiedzialem, ze to jest wada kompilatora, tylko denerwujace
niedopatrzenie. Nie wiem, jak pan, ale mnie bardzo czesto sie zdarza takie
konstrukcje stosowac, ze wzgledu na chec polaczenia inicjalizacji ze
sprawdzaniem warunku (z wiadomych przyczyn nie moge zrobic tego ani za,
ani przed while, jezeli chce unikac specjalnych sztuczek z uzyciem goto).
Ostrzezenia niemal swiadcza zawsze o kompilatorze i ich dobor powinien byc
niezwykle ostrozny. Jezeli bedzie ich za malo - mozna przeoczyc blad,
natomiast jesli za duzo - programista zacznie olewac warningi i na to
samo wychodzi.
: [...]
:> : jest przestarzaly (tzn. wielu rzeczy, ktore sa u mnie w
:> : powszechnym uzyciu nie dopuszcza).
:>
:> : Konkretnie o jakie rzeczy chodzi ?
:>
:> W podobny sposob, z pamieci panu nie powiem.
: Nie rozumiem ... Nie potrafisz wymienic z pamieci rzeczy, ktore
: _sa u Ciebie w powszechnym uzyciu_ a ktorych brak przeszkadza(l)
: Ci w uzywaniu BC++ ??? hm...
Coz, podalem nienajszczesliwszy.
Podam wiec lepszy (ale nie wiem, czy znow czegos nie spieprze).
class string // stare zreszta jak C++
{
char* t; // itd. nieistotne
...
operator const char* () { return t; }
string operator + ( const char* );
string operator + ( const string& );
};
i gdzies tam...
string a, b;
...
string c = a + b;
GCC przelknie, a BC powie:
"Ambiguity between string::operator+(const string&) and operator const char*()"
A zeby byc bardziej kompetentnym to mi sie przypomniala jeszcze jedna rzecz:
Kiedys (wlasnie zreszta takoz w stringu) zrobilem dwa konstruktory, jeden z
const char*, drugi z char* - ten pierwszy przypisywal parametr do wewnetrznego
pola, a drugi kopiowal z przydzialem pamieci (prosze sie nie smiac, bylem
wtedy maly i glupi). No ale najsmieszniejsze, ze kompilator skompilowal mi to,
a po wpisaniu string a( "cos tam" ); wywolal konstruktor z... char*. Owszem,
kompilator postapil madrzej, niz gdyby wywolal to tak, jak zamierzalem, ale
chyba madrzej i zgodniej z regulami (na temat konwersji typow) nie powinien
tego w ogole skompilowac.
:> Ale jako przyklad moge podac deklaracje tablicy z wymiarem
:> podanum jako zmienna.
: I bardzo dobrze ze nie dopuszcza. Nie jest to konstrukcja dopuszczalna
: w raporcie C/C++ tak samo jak i inne przydatne operatory >? i <?.
Stanowczo pan przesadza. Nie ma najmniejszego problemu w implementacji,
a czesto tworzy sie w programach tablice o rozmiarze nieznanym w momencie
kompilacji (zaleznym od roznych czynnikow).
: Sa to rzeczy specyficzne dla GCC. A wiec diabli biora przenosnosc kodu.
Coz, nie zwrocilem na to uwagi. Mowi sie trudno (bo gcc jest dosc szeroko
rozpowszechniony). A na temat przenosnosci swego czasu sie wypowiadalem,
wiec nie bede sie powtarzal.
: Mozna miec zal lub wdziecznosc (do wyboru) do autorow raportu ale nie
: do kompilatora ze ich nie implementuje.
Jak mi sie kompilator nie podoba, to nie wysilam sie na pretensje, tylko go
po prostu nie uzywam.
:> W UNIX'ie C jest jezykiem uprzywilejowanym, a moim zdaniem C++
:> powinien byc tak samo uprzywilejowany
: a dlaczego powinien ?
Bo jest z nim kompatybilny w wystarczajacy sposob, zeby mozna bylo robic
dokladnie to samo pod systemem.
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Re: Kilka pytan do C++
Author: Sektor van Skijlen
Date: Wed, 04 Mar 1998 15:46
Date: Wed, 04 Mar 1998 15:46
27 lines
2272 bytes
2272 bytes
W poprzednim odcinku Karpierz <karpierz@inter.intertele.pl> naskrobal:
: Jeszcze jedno. Nie przepadam za Pan-owaniem mi.
[...]
: Dlatego dla Ciebie i dla wszystkich jestem Adam
Wlasnie to samo mi przyszlo do glowy, ale nie smialem 'zaczac'.
Ktos to wczesniej akurat walnal, a ja po prostu zmalpowalem. Jakby sie ten
ktos nie wyrwal, moze pisalbym do ciebie jak teraz (dobrze, te duza litere
tez chyba mozesz mi darowac).
Akurat wlasnie taka rzecz budzi owe skrajne uczucia, jak to napisales,
z czego nie do konca zdawalem sobie sprawe. Ale tak wyszlo. A powinny
liczyc sie argumenty merytoryczne, czego jednak zawsze staralem sie
w dyskusji trzymac i podobnego stosunku do ciebie staralem sie przynajmniej
nie okazywac, co nie zawsze musialo mi wyjsc (nie pamietam komu akurat
wytknalem brak znajomosci logiki, a w szczegolnosci operatora OR, ale
pominmy to).
Calkowicie sie z toba zgadzam. Mow mi Sektor.
Pozdrawiam,
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Re: Kilka pytan do C++
Author: Sektor van Skijlen
Date: Wed, 04 Mar 1998 15:50
Date: Wed, 04 Mar 1998 15:50
19 lines
1841 bytes
1841 bytes
W poprzednim odcinku Krzysztof G. Baranowski <kgb@manjak.knm.org.pl> naskrobal:
: Zreszta na Unixa dostepne sa
: kompilatory/interpretery mnostwa jezykow: C, C++ ,asm, pascal, perl,
: python, tcl, casl itd., wiec wybor jest duzy.
Tak. Ale zaden z nie jest tak wyjatkowo uprzywilejowany jak C (najwyzej
shelle). A ja chcialbym, zeby C++ mial na UNIX'ie takie same przywileje,
jak C. Duzo wymagam ?
Mam nadzieje tylko, ze przynajmniej gcc bedzie juz produkowal debug info
pod DWARF-a.
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Re: Kilka pytan do C++
Author: Karpierz
Date: Thu, 05 Mar 1998 09:21
Date: Thu, 05 Mar 1998 09:21
114 lines
6072 bytes
6072 bytes
Sektor van Skijlen <sektor@mud.org.pl> napisal
[...]
> Napisalem, co uwazam, po prostu. Nie natykalem sie co prawda na
> owe bledy czesto, ale niestety nie mam takiej pamieci, zeby teraz
> pamietac dokladnie wszystko, co wowczas zaobserwowalem. Ostatni
> raz uzywalem tego kompilatora dwa miesiace temu, co sie jednak nie
> liczy (bo za krotko), a wczesniej to moze dwa lata temu. Dlatego
> wlasnie pamieci mnie zawodzi. Niech panu bedzie, ze nie mam
> zadnych dowodow na to, jakie bledy sa w BC 3.1, bo mnie sie nie
> chce na nowo go teraz odpalac i ogladac, zeby sobie to przypomniec
> (nie jestem masochista).
Zamiast argumentow arogancja ? hehe. Stare jak swiat...
> Ostrzezenia niemal swiadcza zawsze o kompilatorze i ich dobor
> powinien byc niezwykle ostrozny.
Gruba przesada, ze ostrzezenia niemal swiadcza o kompilatorze !
Z drugim argumentem sie zgadzam oprocz slowa 'niezwykle'.
[...]
> : Nie rozumiem ... Nie potrafisz wymienic z pamieci rzeczy, ktore
> : _sa u Ciebie w powszechnym uzyciu_ a ktorych brak przeszkadza(l)
> : Ci w uzywaniu BC++ ??? hm...
> Coz, podalem nienajszczesliwszy.
>
> Podam wiec lepszy (ale nie wiem, czy znow czegos nie spieprze).
> class string // stare zreszta jak C++
> {
> char* t; // itd. nieistotne
> ...
> operator const char* () { return t; }
>
> string operator + ( const char* );
> string operator + ( const string& );
> };
>
> i gdzies tam...
>
> string a, b;
> ...
> string c = a + b;
>
> GCC przelknie, a BC powie:
> "Ambiguity between string::operator+(const string&) and
> operator const char*()"
A mnie sie to kompiluje pod BC++ bez problemow, bez zadnych
bledow i ostrzezen. Wiec jak to jest wlasciwie ? Dlaczego
wprowadzasz innych w blad ? Chyba, ze znow cos spieprzyles
jak sam powiedziales ?
> A zeby byc bardziej kompetentnym to mi sie przypomniala jeszcze
> jedna rzecz: Kiedys (wlasnie zreszta takoz w stringu) zrobilem dwa
> konstruktory, jeden z const char*, drugi z char* - ten pierwszy
> przypisywal parametr do wewnetrznego pola, a drugi kopiowal z
> przydzialem pamieci (prosze sie nie smiac, bylem wtedy maly i
> glupi). No ale najsmieszniejsze, ze kompilator skompilowal mi to,
> a po wpisaniu string a( "cos tam" ); wywolal konstruktor z... char*.
> Owszem, kompilator postapil madrzej, niz gdyby wywolal to tak, jak
> zamierzalem, ale chyba madrzej i zgodniej z regulami (na temat
> konwersji typow) nie powinien tego w ogole skompilowac.
Nieprawda. Kompilator postapil wlasciwie.
const char * i char * to dwa rozne typy i mozna to spokojnie
wykorzystac przy przeciazaniu funkcji czy metod.
Takze wlasciwy konstruktor zostal wywolany gdyz "cos tam" w
C++ jest typu char * a nie typu const char *.
Wiec moze zmien kierunek krytyki z BC++ na Sektor--- ?
Moze mniej ignorancji dla tworcow kompilatorow, a
wiecej samokrytyki dla siebie ?
[...]
> :> W UNIX'ie C jest jezykiem uprzywilejowanym, a moim
> :> zdaniem C++ powinien byc tak samo uprzywilejowany
>
> : a dlaczego powinien ?
>
> Bo jest z nim kompatybilny w wystarczajacy sposob, zeby
> mozna bylo robic dokladnie to samo pod systemem.
Po pierwsze nie calkiem jest kompatybilny (chocby taka "drobnostka"
jak brak standardu name-mangling), po drugie: po co w C++ skoro to
juz zrobiono w C a unix nie jest systemem obiektowym wiec przy
pisaniu nie jest tak bardzo pomocne stosowanie technik obiektowych
po trzecie: wszystkie API samego unixa i prawie wszystkie
inne to po prostu biblioteki w C wiele wiele lat rozwijane wiec po co
niby raptem przepisywac je na C++ jesli i tak mozna do nich w C++
latwo zrobic (lub jest dostarczany) obiektowy wrapper ?
Po czwarte nawet dzisiaj mimo "super" optymalizujacych kompilatorow
C++ okazuje sie ze kod w C jest z reguly wydajniejszy niz C++ a w
znakomitej wiekszosci przypadkow krotszy (mniej smieci) co dla
systemu operacyjnego ma jednak dzisiaj znaczenie.
Na ew. Twoj argument ze przeciez w C++ nie jest konieczne
stosowanie zaawansowanych konstrukcji obiektowych i ze mozna
pisac tak jak w C, odpowiem: ale po co skoro jedno to C (i juz gotowe)
a drugie to tylko troche wiecej niz C ? Tylko po to wszystko
przepisywac zeby sie nazywalo ze jest w C++ ?
Po piate: od dawna jest standard ANSI C, C++ zaledwie od kilku
miesiecy.
Po prostu C zarowno w unixie jak i DOS-ie, Windowsach ale
rowniez w innych systemach operacyjnych stal sie jezykiem
systemowym i API i przejal funkcje assemblera.
Moze i kiedys to samo stanie sie z C++ albo z jakims innym
jezykiem, ale wymusza to potrzeby oraz ew. fakt ze C bedzie
nakladal zbyt wiele ograniczen na tworcow systemow operacyjnych
czy bibliotek. Jak na razie takiej sytuacji jeszcze nie ma i dlugo
ona nie nastapi (zaszlosci, mase juz zrobionych rzeczy itd, itp).
--
Pozdrawiam Adam Karpierz
mailto:karpierz@intertele.pl
http://www.intertele.pl/users/karpierz
Re: Kilka pytan do C++
Author: Karpierz
Date: Thu, 05 Mar 1998 09:34
Date: Thu, 05 Mar 1998 09:34
23 lines
2039 bytes
2039 bytes
Maciej MOCHOL <mmochol@elka.pw.edu.pl> napisal
> On 4 Mar 1998, Karpierz wrote:
>
> > > W UNIX'ie C jest jezykiem uprzywilejowanym, a moim
> > > zdaniem C++ powinien byc tak samo uprzywilejowany
> >
> > a dlaczego powinien ?
>
> Eeee tam, KDE i Qt sa cale w C++, a dzialaja, sa przenaszalne,
> itd.Przeciez nie kazdy musi uzywac zaglebionych templates,
> albo jakichs chorych typecastow. Bo i po co.
Nie bardzo rozumiem co ma KDE i Qt do tego zeby C++ mial
stac nie jezykiem uprzywilejowanym dla unixa ?
Jestes przekonany ze cale sa napisane w C++ ?
Nie korzystaja gdzies na niskim poziomie z API-s napisanych
w C ?
PS: Nie dochodzi ode mnie poczta na adres
mmochol@elka.pw.edu.pl ani na code@beta.cku.pwr.wroc.pl.
Mozesz mi podac jakis zapasowy ? Prawie na pewno wina
jest u mnie gdys mialem ostanio spore klopoty z mailem, ale
moze na inny adres poczta dojdzie.
Re: Kilka pytan do C++
Author: Sektor van Skijlen
Date: Thu, 05 Mar 1998 17:17
Date: Thu, 05 Mar 1998 17:17
15 lines
1782 bytes
1782 bytes
W poprzednim odcinku Karpierz <karpierz@inter.intertele.pl> naskrobal:
: Jestes przekonany ze cale sa napisane w C++ ?
: Nie korzystaja gdzies na niskim poziomie z API-s napisanych
: w C ?
Nawet jesli korzystaja, to CO Z TEGO ? A w C++ NIE DA sie z nich korzystac ?
Moze to nie jest akurat powod, ale ja za to nie widze powodu, dla ktorego
jezyk C ma miec wieksze przywileje pod UNIX'em od C++.
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads