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

Особенности наследования - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Visual C++ C++ - MFC , легкие вопросы http://www.cyberforum.ru/cpp-beginners/thread186918.html
Всем привет. Задача, такая - нужно по нажатию кнопки рисовать прямую, а при нажатие на другую кнопку удалять. Рисую я так: void CMedDlg:: OnBnClickedButton1() { CPaintDC dc(this); dc.MoveTo(3,3); dc.LineTo(30,40);
C++ Создание алгоритма ;( Люди, помогите пожалуйста составить алгоритм выполнения задачи: Сумма 100 членов арифметической прогессии равна 10200, а разность b=2. Определить первое значение члена прогрессии. Буду очень признателен. http://www.cyberforum.ru/cpp-beginners/thread186916.html
C++ Матрица
Дан двумерный целочисленный массив. Память выделить динамически, заполнить случайными числами. Вывести массив в матричной форме. Вычислить количество элементов, кратных числу k в столбце с номером m.
C++ оператор точка
почему когда объявляю свой класс в другом классе, и после использования точки, то переменная, например типа int, которю я хочу вывести, равна 0? например CMyClass myClass; .... void CMyClass2::func() { myClass.переменная... //вот она равна нуля, я хз почему }
C++ Составить программу на С http://www.cyberforum.ru/cpp-beginners/thread186884.html
Дан массив , содержащий не более 100 целых чисел. Вывести на экран все различные элементы массива и определить их количество (повторяющиеся элементы выводить и считать один раз).Если повторяющихся элементов нет, вывести сообщение.
C++ Выбрасывает при выполнении Пытаюсь написать хеадер для работы с большими числами, через разбиение на ряд чисел. При компиляции ошибки не обнаруживаются но при выполнении программа прерывается. подскажите где могут быть ошибки, которые не нравятся компилятору. del.h: #include <iostream.h> #include <vector> using namespace std; typedef unsigned short int usint; подробнее

Показать сообщение отдельно
Lotles
1 / 1 / 0
Регистрация: 29.12.2009
Сообщений: 167

Особенности наследования - C++

06.11.2010, 10:12. Просмотров 418. Ответов 2
Метки (Все метки)

Я не понимаю
C++
1
    ProperFraction f1(1,2)
вызывается цепочка
C++
1
2
3
    ProperFraction(int n, int d){
    FloatFraction(){
    Fraction(){
Меня вызывание этих 2-х конструкторов
C++
1
2
    FloatFraction(){
    Fraction(){
непонятны, по-моему так должно быть:
C++
1
2
3
    ProperFraction(int n, int d){
    FloatFraction(int n, int d){
    Fraction(int n, int d){
Почему так происходит ?

Вот весь код:
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdafx.h>
#include "Fraction.h"
using namespace std;
class FloatFraction : public Fraction {
public:
    FloatFraction(){
        set(0, 1);
    }
    FloatFraction(int n, int d){
        set(n, d);
    }
    FloatFraction(int n){
        set(n, 1);
    }
    double get_float(){
      return static_cast<double>(get_num())/get_den();
    }
    FloatFraction(const Fraction& src) {
         set(src.get_num(), src.get_den());     
         printf ("zzzzzzzzz\n");
     }
};
class ProperFraction : public FloatFraction {
public:
    ProperFraction(){
        set(0, 1);
    }
    ProperFraction(int n, int d){
        set(n, d);
    }
    ProperFraction(int n){
        set(n, 1);
    }
    ProperFraction(const Fraction& src){
        set(src.Fraction::get_num(), src.get_den());
    }
    void pr_proper(ostream& os){
            if (get_whole() != 0)
            os << get_whole() << " ";
            os << get_num() << "/" << get_den();
        }
    int get_whole(){
                int n = Fraction::get_num();
                return n / get_den();
        }
    int get_num(){
        int n = Fraction::get_num();
        return n % get_den();
        }
    ProperFraction operator=(const ProperFraction& src){
        set(src.num, src.den);
        return *this;
    }
};
int main() {
    _asm int 3;
[BASIC]    ProperFraction f1(1,2)[/BASIC],f2(5,6),f3;
    f3=f1+f2;
    cout << "Value of f3 is ";
    f3.pr_proper(cout);
    cout << endl;
    cout << "Float value of is " << f3.get_float() << endl;
    return 0;
}
Fraction.h
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include "stdafx.h"
#include "conio.h"
using namespace std;
class Fraction{
    void normalize(){
        if (den == 0 || num == 0) {
        num = 0;
        den = 1;
        }
    }
    int gcf(int a, int b){
        if (a % b == 0)
        return abs(b);
    else
        return gcf(b, a % b);
    }
    int lcm(int a, int b){
        return (a/gcf(a,b)*b);
    }
public:
    int num, den;
    Fraction(){
        set(0, 1);
    }
    Fraction(int n, int d){
        set(n, d);
    }
    Fraction(int n){
        set(n,1);
    }
    Fraction(const Fraction& src){
        set(src.num,src.den);
    }
    void set(int n, int d){
        num = n; den = d; normalize();
    }
    int get_num() const{
        return num;
    }
    int get_den() const{
        return den;
    }
    Fraction add(const Fraction& other){
        Fraction fract;
    int lcd = lcm(den, other.den);
    int quot1 = lcd/den;
    int quot2 = lcd/other.den;
    fract.set(num * quot1 + other.num * quot2, lcd);
    fract.normalize();
    return fract;
    }
    Fraction mult(const Fraction& other){
        Fraction fract;
    fract.set(num * other.num, den * other.den);
    fract.normalize();
    return fract;
    }
    Fraction operator+(const Fraction& other){
        return add(other);
        }
    Fraction operator=(const Fraction& src){
        set(src.num, src.den);
        cout << "6666666666666" << endl;
        return *this;
    }
    Fraction operator*(const Fraction& other){
        return mult(other);
    }   
    friend ostream& operator << (ostream& os, Fraction& fr){
        os << fr.num << "/" << fr.den;
        return os;
    }
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru