![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
renesko1 |
![]()
Сообщение
#1
|
![]() поиск ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: nir Репутация: ![]() ![]() ![]() |
Вопрос 1.
А также сказать, сколько занимает в памяти следующий объект:
class A
{
int i; 2 byte
short s; 1 byte
static int si; 2 byte
virtual void vf(); 1 byte
}
Итого : 6 байтов правилбно ? ps Я только начал изучать С++ поэтому порой буду задавать простые и глупые вопросы. Сообщение отредактировано: renesko1 - 10.04.2008 17:38 -------------------- typedef void Śūnyatā ;
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Во-первых, это машинно- и компиляторо-зависимо (у меня на машине sizeof(int) = 4, а не 2), во-вторых зависит также от установок выравнивания (если откомпилировать без ничего, результат будет один, если с #pragma pack(1) - то результат другой), ну и в третьих, кто тебе сказал что виртуальная функция тоже что-то занимает, и это надо считать?
|
renesko1 |
![]()
Сообщение
#3
|
![]() поиск ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: nir Репутация: ![]() ![]() ![]() |
эээ ну я ... не знаю ....
+ у меня вопрос можно ли здесь еще задавать небольшие вопросы или создовать новую тему ? -------------------- typedef void Śūnyatā ;
|
klem4 |
![]()
Сообщение
#4
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Если будет много небольших вопросов, то лучше в этой ветке задавай, только нумеруй их тогда, чтобы не возникло путаницы при ответах и тему переименуй в "Ряд вопросов по с++" например.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
renesko1 |
![]()
Сообщение
#5
|
![]() поиск ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: nir Репутация: ![]() ![]() ![]() |
Вопрос 2.
Не могу точно для себя понять зачем перед методами в классе ставить void ? -------------------- typedef void Śūnyatā ;
|
DocNo |
![]()
Сообщение
#6
|
Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Репутация: ![]() ![]() ![]() |
не обязательно void.
можно и int. |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Чтобы объяснить компилятору, что метод ничего не возвращает. Вот синтаксис такой...
|
renesko1 |
![]()
Сообщение
#8
|
![]() поиск ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: nir Репутация: ![]() ![]() ![]() |
Вопрос 3.
Вот написал класс описввающий фигуру rectangle. Он условен но меня волнует правильность.
classe rectangle {
int width, length ;
public :
rectangle (int, int) ;
void draw (int, int) ;
Int Calcarea () ;
Int CalcDiagonal () ;
}
//***************************************************
rectangle::rectangle (int w, int l) ;
{ if (w < 0) or (l < 0)
then { cout << " Error input data/n " ; exit ; }
width = w ;
length = l ;
}
//****************************************************
Int rectangle::Calcarea() ;
{ return width * length }
//****************************************************
void rectangle::draw (int x , int y) ;
{ rectangle(x, y, x + length, y + width) }
//****************************************************
Int rectangle::CalcDiagonal () ;
{ return sqrt(sqr(width) + sqr(length)) }
//************************end*******************************
Сообщение отредактировано: renesko1 - 10.04.2008 19:06 -------------------- typedef void Śūnyatā ;
|
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Цитата меня волнует правильность. В каком смысле "правильность"? Синтаксически пример неправильный, так что компилятор его не пропустит: отсутствуют точки с запятой в конце каждой строки, и после описания класса (а там, где они не нужны - присутствуют), слова then в С/С++ просто нет, так же как и функции sqr, ну и case-sensitivity языка тоже не даст программе откомпилироваться, если используешь тип int, то это не должен быть ни Int , ни INT... А только маленькими буквами...Ну, а логически - фрагмент слишком маленький, чтобы что-то сказать... P.S. Очень похоже на попытку дословного перевода с Паскаля... |
renesko1 |
![]()
Сообщение
#10
|
![]() поиск ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: nir Репутация: ![]() ![]() ![]() |
Просто до этого у меня была монополия pascal
-------------------- typedef void Śūnyatā ;
|
мисс_граффити |
![]()
Сообщение
#11
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
class, не classe
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
AlonZo |
![]()
Сообщение
#12
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: ![]() ![]() ![]() |
У меня тоже вопрос. Есть некий txt файл с числами, расположенными по числу на каждой строке, например:
1 2 3 И простая программа, которая считывает эти числа и выводит на экран. Проблема в том, что последяя цифра в файле дублируется и еще раз выводится. Что я не так делаю? #include <iostream.h>
#include <conio.h>
#include <fstream.h>
int main()
{
int price;
clrscr();
ifstream in("Input.txt");
while(!in.eof())
{
in>>price;
cout<<price<<endl;
}
in.close();
getch();
return 0;
}
Т.е. результатом будет: 1 2 3 3 //Почему дублирует? |
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Цитата Почему дублирует? Потому, что последняя строка - пустая... После прочтения последнего числа (тройки) конец потока еще не достигнут, значит, происходит попытка считать еще одно число. А не получилось, price остается прежним, печатается, и только теперь in.eof() возвращает истину... Чтобы избежать дублирования, подправляем чуть-чуть: while(in >> price) {
cout<<price<<endl;
}
in.close();
|
renesko1 |
![]()
Сообщение
#14
|
![]() поиск ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: nir Репутация: ![]() ![]() ![]() |
Спасибо, мисс_граффити и volvo, я купил себе наконец то книжку и теперь понимаю что за бред я понаписал.
-------------------- typedef void Śūnyatā ;
|
renesko1 |
![]()
Сообщение
#15
|
![]() поиск ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: nir Репутация: ![]() ![]() ![]() |
Вопрос 4.
Как передать в функцию сточку для работы с ней ? -------------------- typedef void Śūnyatā ;
|
volvo |
![]()
Сообщение
#16
|
Гость ![]() |
Смотря что ты подразумеваешь под "строчкой" - это может быть и char *, и std::string, я уж не говорю о других обертках, которых в каждом компиляторе/библиотеке куча...
Если char *, то вот так, скажем: ...
void p(char *s) {
s[0] = '2'; // изменяешь строку
}
int main() {
char s[20] = "start\0";
p(s);
cout << s << endl; // печатаешь измененную
return 0;
}
|
renesko1 |
![]()
Сообщение
#17
|
![]() поиск ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: nir Репутация: ![]() ![]() ![]() |
Ясно.
-------------------- typedef void Śūnyatā ;
|
renesko1 |
![]()
Сообщение
#18
|
![]() поиск ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: nir Репутация: ![]() ![]() ![]() |
Вопрс 5.
"Написать иерархию классов, которые в конструкторе принимает строку и у которых есть открытый метод print, которые выводят эту строку на экран или в файл на диск." Честно пытался понять, но както так не очень далеко ушел. Можно хотя бы легкий пример. -------------------- typedef void Śūnyatā ;
|
volvo |
![]()
Сообщение
#19
|
Гость ![]() |
Не совсем понятно, зачем тут иерархия, это прекрасно делается в одном классе:
#include <iostream>
#include <fstream>
class base {
std::string s;
friend std::ostream& operator << (std::ostream&, const base&);
public:
base(const std::string& st): s(st) {
}
void print(std::ostream& os) {
os << s;
}
};
std::ostream& operator << (std::ostream& os, const base& b) {
os << b.s;
return os;
}
int main() {
base b("hello, world!");
b.print(std::cout); // выводим на экран
std::ofstream out("file.txt", std::ios::out); // создаем файл ...
b.print(out); // ... и пишем строку туда
out.close();
return 0;
}
|
Bo2nik |
![]()
Сообщение
#20
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 30 Пол: Мужской Реальное имя: Никита Репутация: ![]() ![]() ![]() |
Вопрос 6.
Объясните, пожалуйста, почему в отличие от функции printf() аргументами для функции scanf() могут быть только адреса объектов программы, в частном случае - адреса ее переменных. Глупый вопрос, но буду очень признателен. |
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 12:05 |