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

Оператор присваивания - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввод неопределенного количества символов http://www.cyberforum.ru/cpp-beginners/thread153212.html
В программе нужно реализовать возможность ввода символов, но не известно сколько раз надо это сделать. После идет обработка того, что мы ввели. ввод симолов заканчивается при нажатии например "Z". Как-то делал, но не помню как....
C++ Есть ли в классе строк или в алгоритмах разбиение строку на лексемы? Собственно сабж, как говорится. Хотел переписать программу, которую делал с Си строками и массивом Си строк. Сделана она была не совсем правильно, ибо там логичнее было использовать двумерный массив, но все же. Вот переписал с использованием string. Только долго пришлось маяться. Искал какую-нибудь функцию, чтобы не переводить в Си строку для разбиения на слова. Есть ли такие стандартные функции... http://www.cyberforum.ru/cpp-beginners/thread153172.html
Как перерисовать всю клиентскую область? C++
Всем доброго времени суток. Подскажите пожалуйста, как заставить свое окно перерисовываться полностью в момент его неактивности? Например, когда его частично закрыть другим окном, после чего открыть - перерисовывается та закрытая часть но не вся клиентская область. Как перерисовать всю клиентскую область?
C++ типовые алгоритмы сортировки
типовые алгоритмы сортировки как они выглядят ?
C++ Как загрузить файл с FTP? http://www.cyberforum.ru/cpp-beginners/thread153137.html
Есть запросы к FTP-серверу: LIST и NLST. Оба возвращают список файлов и директорий в указанной как параметр папке. Но каждый сервер возвращает этот список в своём формате. Как в общем случае можно узнать, является ли данная запись в возвращённой строке файлом или директорией? Например, по-моему, в QFTP есть функция isFile() или что-то в этом роде. Но мне нельзя использовать стандартные классы,...
C++ Помогите реализовать шифр цезаря Помогите написать графическую программу, которая шифрует слова шифром Цезаря.Шифр Цезаря — один из древнейших шифров. При шифровании каждый символ заменяется другим, отстоящим от него в алфавите на фиксированное число позиций. подробнее

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

Оператор присваивания - C++

12.07.2010, 12:29. Просмотров 760. Ответов 9
Метки (Все метки)

Почему в этом случае вызывается оператор присваивания
Код
        Fraction f4;
        f4 = f1+f2+f3;
а в другом не вызывается:
Код
Fraction f4 = f1+f2+f3;
Вот весь код:
Код
#include <stdafx.h>
#include <conio.h>
using namespace std;
class Fraction {
public:
	int num,den;
private:
	void normalize(){
	if (den == 0 || num == 0) {
        num = 0;
        den = 1;
    }
    if (den < 0) {
        num *= -1;
        den *= -1;
    }
    int n = gcf(num, den);
    num = num / n;
    den = den / n;
}
	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:
	Fraction(){
		set(0,1);
	}
	Fraction(int n, int d){
		set(n,d);
	}
	Fraction(int n){
		set(n,1);
	}
	Fraction(const Fraction& src){
		cout << "kk" << endl;
		num=src.num;
		den=src.den;
	}
	void set(int n, int d){
		num=n;
		den=d;
		normalize();
	}
	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 mult(other);
	}
	Fraction operator=(const Fraction& src){
		set(src.num,src.den);
		return *this;
	}
	bool operator==(const Fraction& other){
		return(num==other.num && den==other.den);
	}
	Fraction operator+(const Fraction& other){
		return add(other);
	}
	friend ostream& operator << (ostream& os, Fraction& fr){
		os << fr.num << fr.den;
		return os;
	}
	bool operator>(const Fraction &other){
		return ((num * other.den) > (den * other.num));
}
	bool operator<(const Fraction &other){
		return ((num * other.den) < (den * other.num));
}  
};
int main() {
        Fraction f1(1,2);
        Fraction f2(1,3);
        Fraction f3(5);
        Fraction f4;
        f4 = f1+f2+f3; 
	cout << "1/2 + 1/3 + 5 = " << f4.num << "/" << f4.den << endl;
	Fraction f5 = f1*f2*f3;
	cout << "1/2 * 1/3 * 5 = " << f5.num << "/" << f5.den << endl;
	if (f3>f2==true && f3>f2==true && f1>f2==true)
		cout << f2.num << "/" << f2.den << " < " << f1.num << "/" << f1.den << " < " << f3.num << "/" << f3.den << endl;
		return 0;
	}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru