实验一:类与对象

实验3:

头文件“Complex.hpp”

#include <iostream>
using namespace std;
#include <cmath>

class Complex
{
public:
    Complex(double a = 0, double b = 0) : real(a), imag(b) {}
    Complex(const Complex& c) : real(c.real), imag(c.imag) {}
    ~Complex() = default;
    double get_real() const { return real; }
    double get_imag() const { return imag; }
    void show() const { cout << real << imag << 'i'; }
    void add(Complex c) { real += c.real; imag += c.imag; }
    friend Complex add(Complex a, Complex b);
    friend bool is_equal(Complex a, Complex b);
    friend double abs(Complex c);
private:
    double real;
    double imag;
};

Complex add(Complex a, Complex b)
{
    Complex c(0, 0);
    c.real = a.real + b.real;
    c.imag = a.imag + b.imag;
    return c;
}

bool is_equal(Complex a, Complex b)
{
    if (a.real == b.real && a.imag == b.imag)
        return true;
    else
        return false;
}

double abs(Complex c)
{
    return static_cast<double>(sqrt(c.real * c.real + c.imag * c.imag));
}

 task3.cpp代码:

#include <iostream>
using namespace std;
#include "Complex.hpp"

int main()
{
    using namespace std;
    Complex c1(2, 6);
    const Complex c2(2.6);
    Complex c3(c1);
    cout << "c1 = ";
    c1.show();
    cout << endl;
    cout << "c2 = ";
    c2.show();
    cout << endl;
    cout << "c2.imag = " << c2.get_imag() << endl;
    cout << "c3 = ";
    c3.show();
    cout << endl;
    cout << "abs(c1) = ";
    cout << abs(c1) << endl;
    cout << boolalpha;
    cout << "c1 == c3 : " << is_equal(c1, c3) << endl;
    cout << "c1 == c2 : " << is_equal(c1, c2) << endl;
    Complex c4;
    c4 = add(c1, c2);
    cout << "c4 = c1 + c2 = ";
    c4.show();
    cout << endl;
    c1.add(c2);
    cout << "c1 += c2, " << "c1 = ";
    c1.show();
    cout << endl;
}

  实验一:类与对象实验一:类与对象

 

 

实验4:

头文件“User.hpp”

#include <iostream>
using namespace std;
#include <string>

class User
{
public:
	User(string a, string b = "111111", string c = "") :name(a), passwd(b), email(c) { n++; }
	~User() = default;
	void set_email()
	{
		cout << "Enter email address: ";
		cin >> email;
		cout << "email is set successfully...\n";
	}
	void change_passwd()
	{
		string temp;
		cout << "Enter old password: ";
		cin >> temp;
		if (temp == passwd)
		{
			cout << "Enter new password: ";
			cin >> passwd;
			cout << "new password is set successfully...\n";
		}
		else
		{
			int i = 1;
			while (temp != passwd && i <= 2)
			{
				cout << "password input error. Please re-enter again:";
				cin >> temp;
				i++;
			}
			if (temp == passwd)
			{
				cout << "Enter new password: ";
				cin >> passwd;
				cout << "new password is set successfully...\n";
			}
			else
				cout << "password input error. Please try after a while.\n";

		}
	}
	void print_info()
	{
		cout << "name:\t" << name << endl;
		cout << "passwd:\t" << "******" << endl;
		cout << "email:\t" << email << endl;

	}
	static void print_n()
	{
		cout << n << endl;
	}
private:
	string name, passwd, email;
	static int n;
};

int User::n = 0;

  task4.cpp

#include"User.hpp"
#include <iostream>

int main() {
	using namespace std;
	cout << "testing 1......" << endl;
	User user1("Jonny", "92197", "xyz@hotmail.com");
	user1.print_info();
	cout << endl << "testing 2......" << endl << endl;
	User user2("Leonard"); user2.change_passwd();
	user2.set_email();
	user2.print_info();
	User::print_n(); 
}

  实验一:类与对象

实验一:类与对象

 

实验一:类与对象

 实验总结:

在这次实验中,我深刻意识到类以及类内函数的调用的问题的细节,在几个地方一直出现问题,并不断尝试改进,包括翻阅书籍,直到最后的成功实现。最大的问题是刚开始没有意识到定义的函数重复不明,导致一直报错。

上一篇:实验一


下一篇:QT mainWindow /widget/dialog区分