热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

实验2类和对象(2)

实验4complex.hpp#pragmaonce#include#includeusingnamespacestd;classComplex{p

实验4

complex.hpp

#pragma once
#include

#include

using namespace std;
class Complex
{
public:
Complex(
double x0, double y);
Complex(
const Complex& obj) : x{ obj.x }, y{ obj.y } {}
double get_real()const { return x; }
double get_imag()const { return y; }
void show()const;
void add(Complex obj);
friend Complex add(Complex c1, Complex c2);
friend
bool is_equal(Complex c1, Complex c2);
friend
double abs (Complex obj);
double x, y;
};
Complex::Complex(
double x0 = 0.0, double y0 = 0.0)
{
x
= x0;
y
= y0;
}
void Complex::show() const {
if (y > 0)
{
cout
<"+" <"i";
}
else if (y <0)
{
cout
<"-" <"i";
}
else
{
cout
<< x;
}
}
void Complex::add(Complex obj) {
x
+= obj.x;
y
+= obj.y;
}
Complex add(Complex c1, Complex c2) {
Complex c3;
c3.x
= c1.x + c2.x;
c3.y
= c1.y + c2.y;
return c3;
}
bool is_equal(Complex c1, Complex c2)
{
if (c1.x == c2.x && c1.y == c2.y)
return true;
else
return false;
}
double abs( Complex obj )
{
double ab;
ab
= sqrt(obj.x * obj.x + obj.y * obj.y);
return ab;
}

task4.cpp

 

#include "Complex.hpp"
#include

void test() {
using namespace std;
Complex c1(
1, -5);
const Complex c2(1.5);
Complex c3(c1);
cout
<<"c1 = ";
c1.show();
cout
<< endl;
cout
<<"c2 = ";
c2.show();
cout
<< endl;
cout
<<"c2.imag = " < endl;
cout <<"c3 = ";
c3.show();
cout
<< endl;
cout
<<"abs(c1) = ";
cout
< endl;
cout << boolalpha;
cout
<<"c1 == c3 : " < endl;
cout <<"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;
}
int main() {
test();
}

实验五

user.hpp

#pragma once
#include

#include
<string>
#include

using namespace std;
class User
{
public:
User(
string name0, string password = "111111", string email0 = ""):name{name0}, passwd{ password }, email{ email0 }
{n
++;}
void set_email();
void change_passwd();
void print_info();
static void print_n() { cout <<"there are" <"users"; }
private:
string name, passwd, email;
static int n;
};
int User::n = 0;
void User::set_email() {
cout
<<"Enter email address :";
cin
>> email;
cout
<<"email is set successfully..." << endl;
}
void User::change_passwd() {
cout
<<"Enter old passwd:";
int i;
for (i = 0; i <3; i++)
{
string b;
cin
>> b;
if (b.compare(passwd) != 0)
{
if (i == 2)
cout
<<"password input error.please try after a while." << endl;
else
cout
<<"password input error.please re-enter again:";
}
else
{
cout
<<"Enter new passwd:";
cin
>> passwd;
cout
<<"new passwd os set successfully...";
break;
}
}
}
void User::print_info()
{
cout
<<"name:" <"passwd:";
string s1(passwd.length(), '*');
cout
< endl;
cout <<"email:" < endl;
}

task5.cpp

#include "User.hpp"
#include

void test() {
using std::cout;
using std::endl;
cout
<<"testing 1......\n";
User user1(
"John", "114514", "qwe@hotmail.com");
user1.print_info();
cout
<< endl
<<"testing 2......\n\n";
User user2(
"Lion");
user2.change_passwd();
user2.set_email();
user2.print_info();
cout
<< endl;
User::print_n();
}
int main() {
test();
}

 



推荐阅读
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
author-avatar
ftwinkle
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有