Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Lotles
1 / 1 / 0
Регистрация: 29.12.2009
Сообщений: 167
#1

Создание класса;что такое :: - C++

13.05.2010, 15:28. Просмотров 626. Ответов 7
Метки нет (Все метки)

Чем переменная f отличается от k
Код
#include "stdafx.h"
#include <conio.h>
using namespace std;
class Fraction{
private:
	void Fraction::fractX(){
		Fraction fractX;
		fractX.k=10;
		fractX.f=20;
	}
public:
    int Fraction::k;
	int f;
};
int main(){
Fraction fract1;
fract1.k=100;
fract1.f=5;
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2010, 15:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание класса;что такое :: (C++):

Объяснить что такое "раздельная компиляция", что такое "интерфейс класса" и "реализация класса" на примере - C++
Есть класс, содержащий объекты и конструктор. Конструктор объявляется в одном из cpp файлов(их несколько). Можно ли, как-то, использовать...

Что такое интерфейс класса - C++
День добрый. Возник спор темой которого было, что собственно можно назвать интерфейсом класса. Хотелось бы услышать мнение или (что...

Что такое указатель на член класса? - C++
Что такое указатель на член класса?

Что такое глобальные и локальные объекты класса? - C++
Что такое глобальние и локальные обекты класа. Напишыте пожалуста с примерами.

Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами? - C++
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?

Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа? - C++
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?

7
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
13.05.2010, 15:32 #2
Цитата Сообщение от Lotles Посмотреть сообщение
void Fraction::fractX(){
Fraction fractX;
fractX.k=10;
fractX.f=20;
}
так можно описывать вне объявления класса, компилятор сказал на это:
C++
1
2
error: extra qualification 'Fraction::' on member 'fractX'
compilation terminated due to -Wfatal-errors.
0
Lotles
1 / 1 / 0
Регистрация: 29.12.2009
Сообщений: 167
13.05.2010, 15:36  [ТС] #3
У меня работает нормально
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
13.05.2010, 15:53 #4
даже если и работает, то устоявшиеся традиции с++ подразумевают вот такого рода код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Fraction{
private:
  void fractX();
public:
  int k;
  int f;
};
 
void Fraction::fractX(){
  Fraction fractX;
  fractX.k=10;
  fractX.f=20;
}
смысл fractX не прозрачен, может подразумевалось подобие конструктора?
1
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
13.05.2010, 15:55 #5
Внутри объявления класса можно писать и без уточнения
C++
1
2
3
4
5
6
class Widget
{
   void Func() 
   {
   }
};
C++
1
2
3
4
5
6
class Widget
{
   void Widget::Func()
   { 
   }
};
Это будет значить одно и тоже. однако если выносить реализацию за объявление класса, то это обязательное условие:
C++
1
2
3
4
5
6
7
8
class Widget
{
   void Func();
};
 
void Widget::Func()
{
}
1
Lotles
1 / 1 / 0
Регистрация: 29.12.2009
Сообщений: 167
13.05.2010, 20:11  [ТС] #6
Цитата Сообщение от fasked Посмотреть сообщение
Внутри объявления класса можно писать и без уточнения
C++
1
2
3
4
5
6
class Widget
{
   void Func() 
   {
   }
};
C++
1
2
3
4
5
6
class Widget
{
   void Widget::Func()
   { 
   }
};
Это будет значить одно и тоже. однако если выносить реализацию за объявление класса, то это обязательное условие:
C++
1
2
3
4
5
6
7
8
class Widget
{
   void Func();
};
 
void Widget::Func()
{
}
Какой смысл в описании функции за пределом класса ?
0
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
13.05.2010, 20:46 #7
Цитата Сообщение от Lotles Посмотреть сообщение
Какой смысл в описании функции за пределом класса ?
Для меня это просто удобно, интерфейс класса не выглядит заграможденным, хорошо читается.
Еще так можно скрывать реализацию =)
1
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
13.05.2010, 23:17 #8
Цитата Сообщение от Lotles Посмотреть сообщение
Какой смысл в описании функции за пределом класса ?
есть несколько причин:
1. разделяет описание и реализацию, тот кто пользуется библиотекой не должен знать весь код библиотеки, только описание
2. описание компилируется один раз, а объявление может использоваться много раз
3. если класс реализован в библиотеке, то объявление с описанием приведет к ошибкам из-за повторного объявления
4. увеличение скорости компиляции
1
13.05.2010, 23:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2010, 23:17
Привет! Вот еще темы с ответами:

Что такое хэндлер файла? Что такое файловый указатель? - C++
Что такое хэндлер файла? Что такое файловый указатель?

Как описать метод класса? Как двумя способами описать инлайнируемый метод класса? Что такое this? - C++
Раздел 1. Строки: нужен фрагмент кода. Обязательно используйте функции для работы со строками. Как найти адрес последнего символа строки?...

Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них - C++
Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них пожалуйста.

При перегрузке оператора для класса не получается использовать имя переменной такое же, как в описании класса - C++
Описал первый класс,затем - описал второй класс, используя первый,и когда начал перезагружать оператор для второго класса, вылезла...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru