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

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

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

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

01.06.2009, 12:40. Просмотров 2081. Ответов 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++):

Не могу сделать чтобы класс содержал основной конструктор и конструктор копирования - C++
Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Класс...

this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) - C++
class Test { int i; public: void test(int i) { this -&gt; i = i; } }; Конструктор Test::Test всегда вызывается...

Будет ли определен компилятором конструктор по умолчанию, если есть конструктор с дефолтным параметром? - C++
Добрый день, сразу к делу, есть некий класс class some { int x; public: some(int y = 1) : x(y) {} };

Не могу правильно сделать конструктор и конструктор копирования и принадлежность точки с заданными координатами треугольнику - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; #include &lt;math.h&gt; #include &lt;algorithm&gt; using...

Создать класс. Написать конструктор по умолчанию, конструктор с параметрами. Перегрузить операции «меньше» и «равно» - C++
Помогите пожалуйста, хоть с одним из заданий. 1. Создать класс. Написать конструктор по умолчанию, конструктор с параметрами....

Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно? - C++
Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
01.06.2009, 12:52 #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  [ТС] #3
А зачем две Setcoursename.Если оно передается первой setCourseName строка 14
тогда она передает следующей setCourseName строка 19.Тоесть что попало в одну будет и в другой правильно я понял.
BullDogoff
10 / 10 / 1
Регистрация: 16.05.2009
Сообщений: 30
01.06.2009, 14:11 #4
setCourseName() в строке 19 - это описание метода класса, этот метод вызывается из конструктора в строке 14.
Делается это для того, чтобы не повторять один и тот же код в двух местах..
Кстати, у меня там где-то такое было, надо бы подшаманить
Kav
0 / 0 / 0
Регистрация: 01.06.2009
Сообщений: 3
01.06.2009, 14:45  [ТС] #5
Спасибо вам
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2009, 14:45
Привет! Вот еще темы с ответами:

Конструктор производного класса требует конструктор предка - C++
Выдаёт вот такую вот ошибку: no matching function for call to 'Cube::Cube()' class Cube { protected: int magInt; bool...

Конструктор инициализации, конструктор копирования, деструктор - C++
Я сделал почти задание по перегрузке операторов. Осталось одно, тоесть три: конструктор инициализации, конструктор копирования, деструктор....

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор - C++
Всем доброго времени суток! нужна ваша помощь! нужно создать класс вектор и реализовать конструктор по умолчанию, копирования и...

Конструктор класса не видит конструктор по умолчанию другого класса - C++
Ошибка, естественно, в Classes.cpp, в строке 20. Ругается, что у класса TailNode нет конструктора по умолчанию, хотя он там, конечно, есть....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.06.2009, 14:45
Ответ Создать тему
Опции темы

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