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

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

Войти
Регистрация
Восстановить пароль
 
mr nobody
0 / 0 / 2
Регистрация: 23.03.2014
Сообщений: 9
#1

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

09.04.2014, 00:01. Просмотров 213. Ответов 5
Метки нет (Все метки)

Объясните, пожалуйста, как работает этот код:
C++
1
PhoneBook::PhoneBook(const std::string & filename_ ):filename(filename_){}
Весь код здесь : СРОЧНО!Нужен код программы записная телефонная книжка

Это конструктор, который наследует filename? но filename это же простая строка, вообще непонятно..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2014, 00:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конструктор (C++):

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

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

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

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

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

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

5
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2014, 00:16 #2
Цитата Сообщение от mr nobody Посмотреть сообщение
Это конструктор, который наследует filename?
нет, это конструктор который инициализирует поле filename копией filename_
1
mr nobody
0 / 0 / 2
Регистрация: 23.03.2014
Сообщений: 9
09.04.2014, 00:19  [ТС] #3
а если у меня несколько полей, как это будет записано?
C++
1
2
filename(filename_)
path(path_)
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2014, 00:22 #4
C++
1
2
3
4
PhoneBook::PhoneBook(const std::string & filename, const std::string & path)
: filename(filename)
, path(path)
{}
и да, в каком бы ты порядке не перечислил поля в этом списке, инициализация полей всегда будет происходит в том порядке в котором они объявлены в классе
1
mr nobody
0 / 0 / 2
Регистрация: 23.03.2014
Сообщений: 9
09.04.2014, 00:29  [ТС] #5
а в чем разница между
C++
1
2
3
PhoneBook::PhoneBook(string filename_ ){
filename = filename_;
}
и тем, что выше?
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2014, 00:43 #6
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
#include <iostream>
 
struct foo
{
    foo() { std::cout << "A::A()\n"; }
    foo(int) { std::cout << "A::A(int)\n"; }
    foo(const foo&) { std::cout << "A::A(const foo&)\n"; }
    
    foo& operator = (const foo&)
    {
        std::cout << "operator = \n"; 
        return *this;
    }
    
};
 
struct bar
{
    foo a, b;
    
    bar(int i) : a(i)
    {
        b = i;
    }
};
 
int main() 
{
    bar obj(5);
    return 0;
}
вывод
A::A(int) //вызов для bar.a, строка 21
A::A() //вызов для bar.b, строка 21, несмотря на то что явно это не написано
A::A(int) //временный объект в строке 23
operator = //присваивание временного объекта bar.b в строке 23
вывод может отличатся в зависимости от опций компиляции, но в худшем случае вывод будет именно такой
1
09.04.2014, 00:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2014, 00:43
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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