Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2015, 11:59   #1
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию О конструкторах классов

Прочитав уже на порядок больше приходится возвращаться для закрепления материала назад. Вот появились некоторые вопросы касательно конструкторов.
Если у класса по дефолту имеется дефолтовый конструктор, который отрабатывает если нет пользовательских конструкторов. Зачем явно объявлять дефолтовый конструктор в классе? Читаю Рихтера, там такое встречается частяком. Например,
PHP код:
abstract class Shape
  
{
    public 
Shape(string name "NoName")
    { 
PetName name; }
    public 
Shape() { }

    public 
string PetName getset; }

    
// A single virtual method.
    // Force all child classes to define how to be rendered.
    
public abstract void Draw();

  } 
Для чего тут объявлять дефолтовый конструктор public Shape() { } , если он неявно и так имеется?
hoz вне форума Ответить с цитированием
Старый 12.02.2015, 12:04   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Откуда он тут имеется? Тут 2 конструктора. Дефолтный есть только если нету никаких конструкторов.


Вот это же не будет работать, ибо дефолтного тут уже нет и конструктор без параметров не объявлен.
Код:
class MyClass
{
    public MyClass(int something) { }
}

MyClass obj1 = new MyClass(999);
MyClass obj2 = new MyClass(); // error
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 12.02.2015 в 12:08.
Alex11223 вне форума Ответить с цитированием
Старый 12.02.2015, 23:15   #3
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Откуда он тут имеется? Тут 2 конструктора. Дефолтный есть только если нету никаких конструкторов.
Я раньше писал на недоязыке mql4. Так вот там имеется возможность неявного конструирования объекта. Видать это меня иной раз и путает.
Т.к. тот язык примитивен и возможностей маловато, пришлось переходить на нечто другое. Вот выбор пал на C#.

Как передать в статический конструктор параметр? Например, будет нужно присвоить статическому полю некое значение "из вне". Это вообще реализуемо?

У меня код не работает такой:
Код:
 // A static constructor!
    static SavingsAccount(double newRate)
    {
      Console.WriteLine("In static ctor!");
      currInterestRate = newRate;
    }
Ошибка:
Ошибка 1 "StaticMatod_by_Troelsen.SavingsAcc ount.SavingsAccount(double)": статический конструктор не должен иметь параметров C:\Users\hoz\Documents\Visual Studio 2010\Projects\StaticMatod_by_Troels en\StaticMatod_by_Troelsen\Program. cs 54

Последний раз редактировалось Stilet; 13.02.2015 в 21:28.
hoz вне форума Ответить с цитированием
Старый 13.02.2015, 20:44   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Нет, вы ж не можете его сами вызвать.
Цитата:
присвоить статическому полю некое значение "из вне"
Это и без конструктора делается.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 13.02.2015, 22:32   #5
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Нет, вы ж не можете его сами вызвать.

Это и без конструктора делается.
Вызовом разве что внутри статического конструктора метода, который присваивает значения статическим полям?
hoz вне форума Ответить с цитированием
Старый 13.02.2015, 22:39   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Зачем вам конструктор для изменения свойства?
Код:
SavingsAccount.CurrInterestRate = newRate
Тем более что даже если бы можно было вызывать статические конструкторы самому, то было бы это не более 1 раза за время жизни программы.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи о классах и конструкторах в Microsoft Visual С++ Chel Visual C++ 0 19.09.2010 13:13
Наследование классов Serjuk Общие вопросы C/C++ 9 11.04.2010 16:25
С++ использование классов moron Помощь студентам 3 06.04.2010 00:30
С++ использование классов moron Общие вопросы C/C++ 0 03.04.2010 22:40
Создание классов и использование объектов классов при написании программ в среде C++. Frozen inside Помощь студентам 0 16.04.2009 23:18