Шаг 20 - Приватные конструкторы

Суть в том, что к данному конструктору нельзя обратиться из вне. Зачем? Ну, например, отключить конструктор по умолчанию, как результат объект можно будет создать только передав параметры. Смотрим.

Visual C++.Net
Visual Basic.Net
CSharp

Visual C++.Net

Ведет себя интереснее всех. Он не выдает ошибку на попытку создания объекта с приватным конструктором, только предупреждение. Ошибку Вы получите, если где-то в программе попытаетесь воспользоваться этим объектом.

#using <mscorlib.dll>

using namespace System;

class  CMyClass
{
private:
	CMyClass();
public:
	CMyClass(int ii);	

	int i;
};
  
CMyClass::CMyClass(int ii)
{
	i=ii;
}

int main(void)
{
	CMyClass cm(5);
	CMyClass ck(); // предупреждение
	return 0;
}

Visual Basic.Net

Module Module1
	Class CMyClass
		Private Overloads Sub New()
		End Sub
		Public Overloads Sub New(ByRef ii As Integer)
			i = ii
		End Sub
		Public i As Integer
	End Class

	Sub Main()
		rem Dim ck As New CMyClass()
		Dim cm As New CMyClass(3)
	End Sub
End Module

CSharp

namespace ConsoleApplication2
{
	using System;
	class CMyClass
	{
		private CMyClass()
		{
		}
		public CMyClass(int ii)
		{
			i=ii;
		}
		public int i=1;
	}

	public class Class1
	{
		public static int Main(string[] args)
		{
			CMyClass cm  = new CMyClass(5);
			//CMyClass ck  = new CMyClass();
			return 0;
		}
	}
}

Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 11.07.2002