Показать сообщение отдельно
  #19 (permalink)  
Старый 12.02.2012, 01:01
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Octane
в C++ классы статичны, ничего "потом" добавить не получится
Теоретически можно создать фабрику объектов через шаблоны в связке со smart pointer's. В этом случае можно получить новый объект в рантайме, а само назначение имени объекта будет иметь вид new Class('Foo')

Сообщение от Mахmахmахimus
static это как прототип
Не совсем, это свойство доступное в пределах класса, т.е. к нему можно обращаться как глобальному объекту, но за пределами класса оно не доступно.

Сообщение от http://msdn.microsoft.com/ru-ru/library/f4ewhdb8.aspx
Модификатор static указывает, что член класса принадлежит самому классу, а не его экземпляру. Даже если в отдельном приложении создается множество экземпляров класса, в нем существует только одна копия члена с модификатором static. При доступе к члену с модификатором static следует ссылаться на класс, на не на его экземпляр. Однако в рамках объявления члена класса к членам static можно обращаться с помощью объекта this.

Модификатором static можно помечать члены классов. Классы, интерфейсы и члены интерфейсов не могут иметь модификатора static.
Сообщение от Mахmахmахimus
Кстати может ты знаешь, допустим ты описал класс, потом создал им кота, потом добавляешь в класс новые протект методы, начнет ли их иметь уже созданный кот?
Ну и нафига это? Мне кажется ты путаешь с полиморфизмом:

#include <iostream>
#include <string>

using namespace std;
 
class A {};
class B {};

template <typename T> class Foo {};

template <> class Foo <A>
{
	public:
		void get() {
			cout << "Class A" << endl;
		}
};

template <> class Foo <B>
{
	public:
		void get() {
			cout << "Class B" << endl;
		}
};


int main() {
	Foo<A> a;
	Foo<B> b;

	a.get(); //Class A
	b.get(); //Class B

	return 0;
}


http://codepad.org/cgzfHj9X

Последний раз редактировалось monolithed, 12.02.2012 в 01:09.
Ответить с цитированием