Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Lotles
 Аватар для Lotles
1 / 1 / 0
Регистрация: 29.12.2009
Сообщений: 167
13.05.2010, 15:28     Создание класса;что такое :: #1
Чем переменная 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2010, 15:28     Создание класса;что такое ::
Посмотрите здесь:

C++ при перезагрузке оператора для класса не получается использовать имя переменной такое же,как в описании класса
C++ Как описать метод класса? Как двумя способами описать инлайнируемый метод класса? Что такое this?
Возможно ли создание объекта шаблонного класса в функции этого класса? C++
C++ Что такое глобальные и локальные объекты класса?
Явное создание экземпляра класса и явная специализация шаблона класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
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.
Lotles
 Аватар для Lotles
1 / 1 / 0
Регистрация: 29.12.2009
Сообщений: 167
13.05.2010, 15:36  [ТС]     Создание класса;что такое :: #3
У меня работает нормально
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
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 не прозрачен, может подразумевалось подобие конструктора?
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 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()
{
}
Lotles
 Аватар для 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()
{
}
Какой смысл в описании функции за пределом класса ?
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
13.05.2010, 20:46     Создание класса;что такое :: #7
Цитата Сообщение от Lotles Посмотреть сообщение
Какой смысл в описании функции за пределом класса ?
Для меня это просто удобно, интерфейс класса не выглядит заграможденным, хорошо читается.
Еще так можно скрывать реализацию =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2010, 23:17     Создание класса;что такое ::
Еще ссылки по теме:

Построение описания класса, создание и уничтожение объектов этого класса C++
Что такое интерфейс класса C++
C++ Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?

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

Или воспользуйтесь поиском по форуму:
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
13.05.2010, 23:17     Создание класса;что такое :: #8
Цитата Сообщение от Lotles Посмотреть сообщение
Какой смысл в описании функции за пределом класса ?
есть несколько причин:
1. разделяет описание и реализацию, тот кто пользуется библиотекой не должен знать весь код библиотеки, только описание
2. описание компилируется один раз, а объявление может использоваться много раз
3. если класс реализован в библиотеке, то объявление с описанием приведет к ошибкам из-за повторного объявления
4. увеличение скорости компиляции
Yandex
Объявления
13.05.2010, 23:17     Создание класса;что такое ::
Ответ Создать тему
Опции темы

Текущее время: 12:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru