User类 新增共有属性Current ID
一、题目描述
每个用户有用户编号(id),用户名(name),密码(passwd)三个属性。其中:
- 用户编号(id)由系统自动顺序编号,用户名和密码都是字母、数字、符合的组合,新用户密码,默认“111111”。
- User类所有对象有一个共有属性Current ID,用来记录当前已经被使用的最大id号(初始值999)。每当新增一个用户时,CurrentID的值加1,同时将这个值作为新用户的id号。
二、解答内容
//user.h
#ifndef HEADER_U
#define HEADER_U
#include<string>
#include<iostream>
using namespace std; //User类声明
class User {
public:
void setInfo(string name0, string passwd0 = "", int id0 = );//支持设置用户信息
void changePasswd(); //支持修改密码
void printInfo(); //支持打印用户信息
User(){} //默认构造函数
User(const User &v); //复制最新用户信息
private:
int id;
static int CurrentID;
string name;
string passwd;
};
int User::CurrentID = ; //静态成员初始化 void User::setInfo(string name0, string passwd0, int id0) {
id = ++CurrentID;
name = name0;
passwd = passwd0;
} void User::changePasswd() {
string passwd1, passwdN;
int n = ;
cout << "Enter the old passwd:";
cin >> passwd1;
while (n <= ) {
if ( passwd == passwd1) {
cout << "Enter the new passwd:";
cin >> passwdN;
break;
}
else if (n < && (passwd != passwd1)) {
cout << "passwd input error,Please re-Enter again:";
cin >> passwd1;
n++;
}
else if (n == && (passwd != passwd1)) {
cout << "Please try after a while." << endl;
break;
}
}
} void User::printInfo() {
cout << "CurrentID:\t" << CurrentID << endl;
cout << "id:\t\t" << id << endl;
cout << "name:\t\t" << name << endl;
cout << "passwd:\t\t" << "******" << endl;
} User::User(const User &v):id(v.id),name(v.name),passwd(v.passwd){
printInfo();
} #endif
//User.cpp
#include<iostream>
#include"user.h"
using namespace std; int main() {
cout << "testing 1......" << endl << endl;
User user1;
user1.setInfo("Leonard");
user1.printInfo(); cout << endl << "testing 2......" << endl << endl;
User user2;
user2.setInfo("Jonny", "");
user2.changePasswd();
user2.printInfo(); cout << endl << "testing 3......" << endl << endl;
User userN(user2); system("pause");
return ;
}
效果如下:
三、题后小结
- 静态数据成员声明在类内,初始化在外部。
- setInfo函数的参数注意把id放于最后并设置默认参数。
User类 新增共有属性Current ID的更多相关文章
- id选择器、类选择器、属性选择器
在网页编辑时,通常要对样式进行各种设置.我们借助CSS样式设计中的选择器,就能很好很方便的对它们进行管理和设置了. 今天,跟大家分享一下几个常用的选择器:id选择器.类选择器.属性选择器. id选择器 ...
- ES6语法~解构赋值、箭头函数、class类继承及属性方法、map、set、symbol、rest、new.target、 Object.entries...
2015年6月17日 ECMAScript 6发布正式版本 前面介绍基本语法, 后面为class用法及属性方法.set.symbol.rest等语法. 一.基本语法: 1. 定义变 ...
- JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
- HTML5新增的属性和废除的属性
HTML5中,在新增加和废除很多元素的同时,也增加和废除了很多属性. 新增的属性 1.表单相关的属性 对input(type=text).select.textarea与button指定autofoc ...
- magento新增商品属性以及将属性加入Flat table
magento的EAV模型非常强大且灵活,但是如果不做优化的话,性能会非常低,因为attributes都存放在附表里,要获取一个entity的attribute,需要表联结一次,如果需要获取多条att ...
- Java生鲜电商平台-生鲜电商中商品类目、属性、品牌、单位架构设计与实战
Java生鲜电商平台-生鲜电商中商品类目.属性.品牌.单位架构设计与实战 说明:Java生鲜电商平台-生鲜电商中商品类目.属性.品牌.单位架构设计与实战经验分享 凡是涉及到购物,必然是建立在商品的基础 ...
- Implement Custom Business Classes and Reference Properties实现自定义业务类和引用属性(EF)
In this lesson, you will learn how to implement business classes from scratch. For this purpose, the ...
- 实体类的枚举属性--原来支持枚举类型这么简单,没有EF5.0也可以
通常,我们都是在业务层和界面层使用枚举类型,这能够为我们编程带来便利,但在数据访问层,不使用枚举类型,因为很多数据库都不支持,比如我们现在用的SqlServer2008就不支持枚举类型的列,用的时候也 ...
- 福利->KVC+Runtime获取类/对象的属性/成员变量/方法/协议并实现字典转模型
我们知道,KVC+Runtime可以做非常多的事情.有了这个,我们可以实现很多的效果. 这里来个福利,利用KVC+Runtime获取类/对象的所有成员变量.属性.方法及协议: 并利用它来实现字典转模型 ...
随机推荐
- Golang之方法(自定义类型,struct)
方法的使用,请看本天师的代码 //Golang的方法定义 //Golang中的方法是作用在特定类型的变量上,因此自定义类型,都可以有方法,不仅仅是struct //定义:func (recevier ...
- YUI前端优化之内容篇
Excetional Performance团队总结出了一系列可以提高网站速度的方法.可以分为7大类34条.包括内容.服务器.cookie.CSS.JavaScript.图片.移动应用等七部分.一.内 ...
- Basic4android v3.50 发布
这次发布的主要是debug 的增强.说实话,在这一方面B4a 比delphi做的要好.希望delphi 在新的版本里面 能进一步加强. I'm happy to release Basic4andro ...
- CodeForces 686B Little Robber Girl's Zoo (构造冒泡排序)
题意:给定一排列,让你通过一个区间交换的方式,完成排序. 析:这个题说了,最多不能超过20000次,而 n 最大才100,那么冒泡排序复杂度为 n * n,才10000,肯定是可以的,所以我们就模拟冒 ...
- HBase-1.2.1和Phoenix-4.7.0分布式安装指南
目录 目录 1 1. 前言 2 2. 概念 2 2.1. Region name 2 3. 约定 2 4. 相关端口 3 5. 下载HBase 3 6. 安装步骤 3 6.1. 修改conf/regi ...
- 解决阿里云OSS跨域问题
解决阿里云OSS跨域问题 现象 本人项目中对阿里云图片请求进行了两次,第一次通过img标签进行,第二次通过异步加载获取.第一次请求到图片,浏览器会进行缓存,随后再进行异步请求,保存跨域失效. 错误信息 ...
- java经典开发模式
Java Web开发方案有多种可供选择,这里列举一些经典的开发模式进行横向比较,为Java Web的开发模式选择提供参考.除此之外还有好多方案(如Tapestry和Wicket等等)并不了解,这里就不 ...
- 咏南CS开发框架新的界面风格
咏南CS开发框架新的界面风格 这种风格完全和WINDOWS桌面一样,符合用户的操作习惯. 我的桌面的图标和WINDOWS桌面一样分为二类:1)快捷方式 2)文件夹. 如果快捷方式较多,看得人眼花缭乱 ...
- 好用的下拉第三方——nicespinner
1.简介 GitHub地址:https://github.com/arcadefire/nice-spinner Gradle中添加: allprojects { repositories { ... ...
- Replication--备份初始化需要还原备份么?
测试场景:发布服务器:SQLVM6\SQL2订阅服务器:SQLVM5\SQL2分发服务器:SQLVM3\SQL2发布数据库:RepDB2订阅数据库:RepDB2发布:RepDB2_TB1 测试步骤:1 ...