Премини към съдържанието
Xagec

Не вграден конструктор C++?

Препоръчан отговор


Написал съм този клас който е с вграден конструктор ,нали така? Искам да напиша дефиницията на този клас пак с 1 конструктор с 2 параметъра , но този път конструкторът ми да не е вграден? т.е. какво ще рече това? Имах за задачка да напиша клас Student с 2 член променливи , име от тип char и fnom и така , сами виждате какво и сега искат да го направиме същото но с НЕ ВГРАДЕН конструктор ..... т.е.?

#include "stdafx.h"
#include "iostream"
using namespace std;

class Student  {
private:
	char name[10];
	int fnom;
public: 	
Student(char *n,int nom) {
      fnom=nom;
	  strcpy(name,n);
}
void Show()  {
	cout<<"Name:"<<name<<" "<<"Fnom:"<<fnom<<"\n";
}


};



int _tmain(int argc, _TCHAR* argv[])
{	
	Student a("Ivan",123);
	a.Show();

	
return 0;
}

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Ако искаш "невграден" конструктор, в дефиницията на класа описваш само прототипа на контруктора, а извън гласа го имплементираш по следния начин:

#include "stdafx.h"
#include "iostream"
using namespace std;

class Student  {
private:
	char name[10];
	int fnom;
	
public:         
	Student();	// Always write your own default constructor to init your private vars
	Student(char *, int); // Constructor prototype
	void Show()  {
		cout<<"Name:"<<name<<" "<<"Fnom:"<<fnom<<"\n";
	}
};

Student::Student()	// Default constructor
}
	name[0] = '\0';
	fnom = 0;
}

Student::Student(char * n , int nom) // Constructor implementation
{
	fnom = nom;
	strcpy(name, n);
}

int _tmain(int argc, _TCHAR * argv[])
{       
	Student a("Ivan", 123);
	a.Show();

	return 0;
}
Извън класа си пишеш метода (член-функцията) като поставяш пред името й <името_на_класа>:: ! Ако искаш и show() да си я дефинираш извън класа:
class Student {
...
void Show(); // method prototype
...
};

void Student::Show() // method implementation
{ 
...
}
Редактирано от synner (преглед на промените)
  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Дааа , мерси , аз го направих вече:

private:
char name[10];
int fnom;
public:
Student(char * n,int nom);
};
Student::Student(char *n,int nom)
{
strcpy(name,n);
fnom=nom;
}
и един допълнителен въпрос ако може:

Какво е необходимо за да се декларира и дефинира статична член-променлива в даден клас?

аз мисля че просто трябва да се добави ключова дума static, или бъркам?

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

...

Какво е необходимо за да се декларира и дефинира статична член-променлива в даден клас?

аз мисля че просто трябва да се добави ключова дума static, или бъркам?

Точно така, но нали знаеш, че стойността на статична член-променлива се споделя между всички обекти от този клас?
  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

т.е всички обекти от този клас има достъп до нея?


Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Всички обекти освен, че имат достъп до нея, стойността на член-променливата е споделена между всички! Т.е. ако промениш стойността в един обект, автоматично я променяш във всички обекти от същия клас!

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.