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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
Kav
0 / 0 / 0
Регистрация: 01.06.2009
Сообщений: 3
#1

Конструктор C++ - C++

01.06.2009, 12:40. Просмотров 2079. Ответов 4
Метки нет (Все метки)

Привет.Я из этого примера все понял кроме конструктора.Каким образом строка 18 Setcoursename получает от конструктора строку 14 CS101 Introduction to Programming in C++.И зачем нужен setcoursename в строке 13.Обясните новичку как работает конструктор.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Fig. 3.15: GradeBook.h
// GradeBook class definition presents the public interface of
// the class. Member-function definitions appear in GradeBook.cpp.
#include <string> // program uses C++ standard string class
using std::string;
// GradeBook class definition
class GradeBook
{
 public:
 GradeBook( string ); // constructor that initializes a GradeBook object
 void setCourseName( string ); // function that sets the course name
 string getCourseName(); // function that gets the course name
 void displayMessage(); // function that displays a welcome message
 private:
 string courseName; // course name for this GradeBook
 }; // end class GradeBook
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 // Fig. 3.16: GradeBook.cpp
 // Implementations of the GradeBook member-function definitions.
 // The setCourseName function performs validation.
 #include <iostream>
 using std::cout;
 using std::endl;
 
 #include "GradeBook.h" // include definition of class GradeBook
 
 // constructor initializes courseName with string supplied as argument
 GradeBook::GradeBook( string name )
 {
   setCourseName( name ); // validate and store courseName
 } // end GradeBook constructor
 
 // function that sets the course name; 
 // ensures that the course name has at most 25 characters 
 void GradeBook::setCourseName( string name ) 
 { 
 if ( name.length() <= 25 ) // if name has 25 or fewer characters 
 courseName = name; // store the course name in the object 
 
 if ( name.length() > 25 ) // if name has more than 25 characters 
 { 
 // set courseName to first 25 characters of parameter name 
 courseName = name.substr( 0, 25 ); // start at 0, length of 25 
 
 cout << "Name \"" << name << "\" exceeds maximum length (25).\n"
 << "Limiting courseName to first 25 characters.\n" << endl; 
 } // end if 
 } // end function setCourseName 
 
 // function to get the course name
 string GradeBook::getCourseName()
 {
 return courseName; // return object's courseName
 } // end function getCourseName
 
 // display a welcome message to the GradeBook user
 void GradeBook::displayMessage()
 {
 // call getCourseName to get the courseName
 cout << "Welcome to the grade book for\n" << getCourseName()
 << "!" << endl;
 } // end function displayMessage
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Fig. 3.17: fig03_17.cpp
// Create and manipulate a GradeBook object; illustrate validation.
#include <iostream>
using std::cout;
using std::endl;
#include "GradeBook.h" // include definition of class GradeBook
 
 // function main begins program execution
 int main()
 {
 // create two GradeBook objects;
 // initial course name of gradeBook1 is too long
 GradeBook gradeBook1( "CS101 Introduction to Programming in C++");
 GradeBook gradeBook2( "CS102 C++ Data Structures" );
 // display each GradeBook's courseName
 cout << "gradeBook1's initial course name is: "
 << gradeBook1.getCourseName()
 << "\ngradeBook2's initial course name is: "
 << gradeBook2.getCourseName() << endl;
 
 // modify myGradeBook's courseName (with a valid-length string)
 gradeBook1.setCourseName( "CS101 C++ Programming" );
 
 // display each GradeBook's courseName
cout << "\ngradeBook1's course name is: "
 << gradeBook1.getCourseName()
 << "\ngradeBook2's course name is: "
 << gradeBook2.getCourseName() << endl;
  return 0; // indicate successful termination
} // end main
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2009, 12:40     Конструктор C++
Посмотрите здесь:

Конструктор - C++
Вот если в конструкторе инициализировать какую-то переменную (к=0), можно же ее в каком-то методе изменять (например к++)?

Конструктор - C++
Всем доброго времени суток. Пишу программу, которая вычисляет ранг матрицы и выводит транспонированную. Вот код: matr.h: class matr {...

this и конструктор - C++
Всем привет! Столкнулся с задачей: У класса есть статический указатель, который инициализируется CableTV* CableTV :: ptr = new...

Конструктор - C++
Для чего здесь конструктор, что он делает? и почему объект one разрушается первым? #include&lt;iostream&gt; using namespace std; class ...

Конструктор new - C++
#include &quot;stdafx.h&quot; #include &lt;string&gt; #include &lt;iostream&gt; using namespace std; class IoString{ public: string str; ...

Конструктор - C++
Прошу помочь разобраться , что означает строка с пометкой ... а именно это :itsA(itsA class Two: public One { Two(int...

Конструктор - C++
Помогите к этой программе дописать конструктор с параметрами, препод сказал чтоб с клавиатуры вводилась карта, что-то типо этого.... ...

Конструктор - C++
Конструктор сбрасывающий экземпляр класса. Что он из себя представляет? Приведите примеры.

Конструктор в C++ - C++
Помогите, пожалуйста, разобраться с задачей. Дано: создать программу используя конструктор, деструктор, классы с наследованием. Я написала,...

Конструктор - C++
Какие числа выведет если убрать cin &gt;&gt; x &gt;&gt; y; #include &lt;stdlib.h&gt; #include &lt;iostream&gt; using namespace std; class myclass { ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
01.06.2009, 12:52     Конструктор C++ #2
Конструктор, это та функция в классе, которая выполянется при создании объекта класса..

например
C++
1
GradeBook object;
для объекта object выполнился конструктор по-умолчанию...

но у вас определен конструктор с парметрами, то есть возможне следующий варинт:

C++
1
GradeBook object("anystring");
при таком создании объекта, у вас выполнится конструктор
GradeBook::GradeBook( string name ), который в свою очередь передаст строку name в метод setCourseName()... т.е. происходит инициализация...
Kav
0 / 0 / 0
Регистрация: 01.06.2009
Сообщений: 3
01.06.2009, 13:27  [ТС]     Конструктор C++ #3
А зачем две Setcoursename.Если оно передается первой setCourseName строка 14
тогда она передает следующей setCourseName строка 19.Тоесть что попало в одну будет и в другой правильно я понял.
BullDogoff
10 / 10 / 1
Регистрация: 16.05.2009
Сообщений: 30
01.06.2009, 14:11     Конструктор C++ #4
setCourseName() в строке 19 - это описание метода класса, этот метод вызывается из конструктора в строке 14.
Делается это для того, чтобы не повторять один и тот же код в двух местах..
Кстати, у меня там где-то такое было, надо бы подшаманить
Kav
0 / 0 / 0
Регистрация: 01.06.2009
Сообщений: 3
01.06.2009, 14:45  [ТС]     Конструктор C++ #5
Спасибо вам
Yandex
Объявления
01.06.2009, 14:45     Конструктор C++
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru