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

Подскажите с конструкторами классов - C++

Восстановить пароль Регистрация
 
cxemuch205
 Аватар для cxemuch205
1 / 1 / 1
Регистрация: 31.10.2012
Сообщений: 46
17.04.2013, 22:38     Подскажите с конструкторами классов #1
Напишите пожалуйста кратенькие примеры конструкторов класса.
Примеры конструкторов к этому классу пожалуйста (конструктор: копирования, присваивания и по-умолч.)
Вот класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
class rast 
{
 char name[50];
 int vis,voz;
 public:
 
  rast(const char* name, int vis, int vozr);
  ~rast();
  void god(int min);
  void podrez(int rez);
  void show();
};
Спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stima
429 / 284 / 16
Регистрация: 22.03.2011
Сообщений: 923
Завершенные тесты: 1
17.04.2013, 22:41     Подскажите с конструкторами классов #2
C++
1
2
3
4
5
6
...
rast(); //конструктор по умолчанию
rast(const rast&); //конструктор копирования
rast& operator=(const rast&); // оператор присваивания
//void operator=(const rast&); // оператор присваивания без возврата
...
cxemuch205
 Аватар для cxemuch205
1 / 1 / 1
Регистрация: 31.10.2012
Сообщений: 46
17.04.2013, 22:46  [ТС]     Подскажите с конструкторами классов #3
Цитата Сообщение от stima Посмотреть сообщение
C++
1
2
3
4
5
6
...
rast(); //конструктор по умолчанию
rast(const rast&); //конструктор копирования
rast& operator=(const rast&); // оператор присваивания
//void operator=(const rast&); // оператор присваивания без возврата
...
Можете пжл, прокомментировать конструктор копирования
Silvestr1994
 Аватар для Silvestr1994
27 / 27 / 1
Регистрация: 26.10.2012
Сообщений: 101
17.04.2013, 22:46     Подскажите с конструкторами классов #4
пример :
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
// xofxref.cpp
// copy constructor: X(X&)
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////
class alpha
   {
   private:
      int data;
   public:
      alpha()                    //no-arg constructor
         { }
      alpha(int d)               //one-arg constructor
         { data = d; }
      alpha(alpha& a)            //copy constructor
         {
         data = a.data;
         cout << "\nCopy constructor invoked";
         }
      void display()             //display
         { cout << data; }
      void operator = (alpha& a) //overloaded = operator
         {
         data = a.data;
         cout << "\nAssignment operator invoked";
         }
   };
////////////////////////////////////////////////////////////////
int main()
   {
   alpha a1(37);
   alpha a2;
 
   a2 = a1;                        //invoke overloaded =
   cout << "\na2="; a2.display();  //display a2
 
   alpha a3(a1);                   //invoke copy constructor
// alpha a3 = a1;                  //equivalent definition of a3
   cout << "\na3="; a3.display();  //display a3
   cout << endl;
   return 0;
   }
- конструктор копирования
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
// counter.cpp
// object represents a counter variable
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////
class Counter
   {
   private:
      unsigned int count;                  //count
   public:
      Counter() : count(0)                 //constructor
         { /*empty body*/ } 
      void inc_count()                     //increment count
         { count++; }
      int get_count()                      //return count
         { return count; }
   };
////////////////////////////////////////////////////////////////
int main()
   {
   Counter c1, c2;                     //define and initialize
 
   cout << "\nc1=" << c1.get_count();  //display
   cout << "\nc2=" << c2.get_count();
 
   c1.inc_count();                     //increment c1
   c2.inc_count();                     //increment c2
   c2.inc_count();                     //increment c2
 
   cout << "\nc1=" << c1.get_count();  //display again
   cout << "\nc2=" << c2.get_count();
   cout << endl;
   return 0;
   }
- конструктор
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
// ecopycon.cpp
// initialize objects using default copy constructor
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////
class Distance                    //English Distance class
   {
   private:
      int feet;
      float inches;
   public:                        //constructor (no args)
      Distance() : feet(0), inches(0.0)                
         {  }                     
      //Note: no one-arg constructor
                                  //constructor (two args)
      Distance(int ft, float in)  : feet(ft), inches(in) 
         {  }                     
 
      void getdist()              //get length from user
         {
         cout << "\nEnter feet: ";  cin >> feet;
         cout << "Enter inches: ";  cin >> inches;
         }
      void showdist()             //display distance
         { cout << feet << "\'-" << inches << '\"'; }
   };
////////////////////////////////////////////////////////////////
int main()
   {
   Distance dist1(11, 6.25);      //two-arg constructor
   Distance dist2(dist1);         //one-arg constructor
   Distance dist3 = dist1;        //also one-arg constructor
 
                                  //display all lengths
   cout << "\ndist1 = ";  dist1.showdist();
   cout << "\ndist2 = ";  dist2.showdist();
   cout << "\ndist3 = ";  dist3.showdist();
   cout << endl;
   return 0;
   }
- с параметрами конструктор
cxemuch205
 Аватар для cxemuch205
1 / 1 / 1
Регистрация: 31.10.2012
Сообщений: 46
17.04.2013, 22:47  [ТС]     Подскажите с конструкторами классов #5
Еще, пожалуйста принимаются краткие примеры.Спасибо!
stima
429 / 284 / 16
Регистрация: 22.03.2011
Сообщений: 923
Завершенные тесты: 1
17.04.2013, 22:50     Подскажите с конструкторами классов #6
Конструктор копирования используется для инициализации одного обьекта другим.
C++
1
2
3
4
5
6
7
8
class A{}
...
A first;  //инициализация обьекта first с использованием конструктора по умолчанию
A second(first); //инициализация обьекта second с использованием конструктора копирования
 
A third;
third = first; //присваивание обьекта first обьекту third. 
...
п.с. не пишите так
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2013, 22:57     Подскажите с конструкторами классов
Еще ссылки по теме:

C++ Работа с конструкторами в С++
C++ Работа с 2 конструкторами
Задачка с конструкторами C++

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

Или воспользуйтесь поиском по форуму:
cxemuch205
 Аватар для cxemuch205
1 / 1 / 1
Регистрация: 31.10.2012
Сообщений: 46
17.04.2013, 22:57  [ТС]     Подскажите с конструкторами классов #7
Цитата Сообщение от stima Посмотреть сообщение
п.с. не пишите так
Эта программа не моя реализация, я просто хочу с конструкторами понять, какие как выглядят.. Спасибо за замечание!
Yandex
Объявления
17.04.2013, 22:57     Подскажите с конструкторами классов
Ответ Создать тему
Опции темы

Текущее время: 17:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru