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

Где ошибка? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить значение функции Y=tg(5x/3)+ln|2x+5|+1,8 http://www.cyberforum.ru/cpp-beginners/thread805643.html
Помогите написать! http://cs411426.vk.me/v411426519/708c/8LUA4X3GszM.jpg Добавлено через 21 час 16 минут Вот задание N1: /*Y=tg(5x/3)+ln|2x+5|+1,8*/ #include <iostream.h>
C++ ГСЧ, одинаковые значения Подскажите, почему при каждом запуске программы генератор случайных чисел выдает одни и те же значения? т.е. если при первом запуске он выдал последовательность 41, 105, ..., и тд то при новом запуске снова выдает 41, 105, ... N=200; n=(rand()%(N)); http://www.cyberforum.ru/cpp-beginners/thread805642.html
C++ Матрица змейкой
Нужно вывести матрицу змейкой, но выводит по строчкам, что нужно исправить? // Матрица змейкой #include "stdafx.h" #include <iostream> using namespace std; #include <stdlib.h> #include <time.h> int main() { srand((int)clock());
C++ Абстрактные классы
void _tmain() { const int lim = 100; MyFunction *pFunc ; int count = 0; pFunc = new My_Exp; pFunc = new Line; pFunc = new My_KX;
C++ Множественное наследование (Разработайте базовый класс CLIENT) http://www.cyberforum.ru/cpp-beginners/thread805517.html
Задание: Множественное наследование. Разработайте базовый класс CLIENT. Элемент класса: ФИО; количество поездок. Методы:
C++ Класс Train Задание 1: Динамические данные. Задайте любое поле класса как указатель на переменную соответствующего типа. Задание 2: Инициализация массива объектов. Добавьте в разработанный класс три конструктора: конструктор по умолчанию; конструктор с параметрами; конструктор копирования; и деструктор. подробнее

Показать сообщение отдельно
srg_btl
33 / 33 / 2
Регистрация: 21.02.2013
Сообщений: 90
11.03.2013, 17:33     Где ошибка?
C++
1
Triangle(double xx = 0,double yy = 0):Shape(x, y)
Твой конструктор принимает 2 переменные double: xx и yy, и ты пытаешся передать в конструктор родительского класса переменные x и y. Если не ошибаюсь для них сработает конструктор по-умолчанию и они будут равны 0, либо какойто мусор, который хранился до этого в этом участке памяти. Надо передавать значения так:
C++
1
Triangle(double xx = 0,double yy = 0):Shape(xx, yy)
Добавлено через 5 минут
Конструктор это всего лишь функция(метод) который выполняеться после алокации памяти, чтоб выполнить инициализацию переменых или других обьектов. Так как триангл и другие классы наследуються от Шейпа, то это значит что у них есть свойства и переменые базового класса, т.е. есть переменные x и y, но они только поместились в памяти не инициализированы, и ты этот муссор передаешь родительському классу. Из-за этого и не понятки получаються

Добавлено через 5 минут
Так же именно после двух точек ты вызываешь конструкторы для элементов класса, если же ты там ничего не написал сработает конструктор по-умолчанию. В твоем случае
C++
1
2
3
4
5
    Shape(double a = 0, double b = 0)
    {
        x = a;
        y = b;
    }
Сначала для х и у сработал конструктор по-умолчанию, где их значения стали нулями, а после этого в теле функций ты вызываешь оператор присваивания, где уже помещаешь нужные тебе значения. Эфективнее делать так:
C++
1
2
3
4
    Shape(double a = 0, double b = 0): x(a), y(b)
    {
  
    }
В этом случае ты сразу вызываешь для них конструктор с нужными параметрами. И не забывай про порядок, вызывай конструкторе в таком же порядке ккак и обьявлены элементы в классе. если х первый стоит то сначала для него вызываешь, или наоборот с у.
 
Текущее время: 03:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru