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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ матрица http://www.cyberforum.ru/cpp-beginners/thread175171.html
Дана целочисленная прямоугольная матрица.Определить: 1)Количество строк ,не содержащих ни одного нулевого элемента. 2) Максимальное из чисел, встречающихся в заданной матрице более одного раза
C++ На сколько квадратов можно разрезать данный прямоугольник? Даны натуральные числа a и b, которые определяют стороны прямоугольника. На сколько квадратов, стороны которых выражены также натуральными числами, можно разрезать данный прямоугольник, если от него каждый раз отрезать квадрат максимальной площади. Помогите пожалуйста решить. Решить нужно на языке С (попрошу, если это возможно писать пояснения к вашим действиям) http://www.cyberforum.ru/cpp-beginners/thread175162.html
последовательность из 10 случайных чисел C++
Написать программу которая генерирует последовательность из 10 случайных чисел, в диапозоне от 1 до 10. Выводит эти чисола на экран и вычисляет их среденее арифметическое. #include <iostream> #include <cstdlib> #include <ctime> using namespace std; void main() {
C++ определить положение точки как это сделать?
Дали задание и совсем не представляю как его делать, может кто нибудь подскажет или направит с чего начать... Вот задание:определить положение точки M(x,y) относительно заштрихованной фигуры
C++ Умножение матриц http://www.cyberforum.ru/cpp-beginners/thread175148.html
Вычислить: q = min(2*MA*MB) где MA, MB – матрицы размером N1xN2. Числа N1 и N2 задаются пользователем в начале работы программы. Все элементы матриц заполнить случайными целыми числами в диапазоне . Программу напишите пожалуйста как можно проще.
C++ поиск корня методом касательных Задача: найти корень уравнения, используя метод касательных. Точность e=0.0001 (в принципе она не нужна, так как я ввожу ее самостоятельно); x принадлежит промежутку (те a и b, тоже ввожу их самостоятельно). Вроде алгоритм правильный, но сумма - нуль и колоссальное число итераций n Код: // óòî÷íåíèå êîðíåé ìåòîäîì êàñàòåëüíûõ. #include <conio.h> #include <stdio.h> #include <cmath> using... подробнее

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

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

11.10.2010, 21:10. Просмотров 1857. Ответов 12
Метки (Все метки)

Привет всем !
Каким образом вызывается оператор присваивания, например, здесь:
Код
a = "I ";
если в аргументе char*, а в операторе присваивания const String&.
Может быть дело в operator char*(), но в ответе operator char() вызывается после присваивания:

Компилятор выводит :
Vizivaetsja operator prisvaivanija
Vizivaetsja operator prisvaivanija
Vizivaetsja operator prisvaivanija
Vizvalsja operator char*
...
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
74
75
#include "stdafx.h"
#include "conio.h"
#include <string.h>
using namespace std;
int a;
class String {
private:
    char* ptr;
public:
    String(){
        ptr = new char[1];
        ptr[0] = '\0';
    }
    String(char* s){
            int n = strlen(s);
            ptr = new char[n + 1];
            strcpy(ptr, s);
    }
    String(const String& src){
            int n = strlen(src.ptr);
            ptr = new char[n + 1];
            strcpy(ptr, src.ptr);
    }
 
    ~String(){
            delete [] ptr;
    }
 
    String& operator=(const String& src){
        cout << "Vizivaetsja operator prisvaivanija" << endl;
        cpy(src.ptr); 
        return *this;
    }
 
 
 
    String operator+(char* s){
        String new_str(ptr);
            cout << "S = " << s << endl;
            cout << "new_str.ptr = " << new_str.ptr << endl;
            cout << "ptr = " << ptr << endl;
            new_str.cat(s);
            return new_str;
    }
    operator char*() {
        cout << "vizvalsja operator char*" << endl;
        cout << "ptr = " << ptr << endl;
        return ptr;
    }
    void cat(char* s){
            int n = strlen(ptr) + strlen(s);
            cout <<".......... " << ptr << endl;
            cout <<".......... " << s << endl;
            char* p1 = new char[n + 1];
            strcpy(p1, ptr);
            strcat(p1, s);
            delete [] ptr;
            ptr = p1;
    }
    void cpy(char* s){
        delete [] ptr;
        int n = strlen(s);
        ptr = new char[n + 1];
        strcpy(ptr, s);
    }
};
 
int main() {
    String a, b, c;
    a = "I ";
    b = "am ";
    c = "so ";
    String d = a + b;
    cout << d << endl;
    return 0;}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru