C++ 类,如何用类似字符串的东西定义一个数据成员?

问题描述

C++ 类,如何用类似字符串的东西定义一个数据成员?

题目:设计一个书类,能够保存书名、定价,所有书的本数和总价。
为了实现这一要求,可以将书名、定价设计为普通数据成员,将书的本数和总价设计为静态数据成员。(如何实现题目中的书名?)
如:
class book{
public:
book()//构造函数,怎样定义一个名字
void show();//cout名字
private:
//怎样定义一个名字

void main{
book a();//对象a,输入一个名字;

求各位赐教!

解决方案

#include
#include
using namespace std;

class Book
{
public:
Book(string name,double price){
_name=name;
_price=price;
_bookNum++;
_sumPrice+=price;
};
void display(){
cout<<"name:"<<_name<<endl;
cout<<"price:"<<_price<<endl;
cout<<"totle number:"<<_bookNum<<endl;
cout<<"totle price:"<<_sumPrice<<endl;
}
private:
string _name;
double _price;
static int _bookNum;
static double _sumPrice;

};

int Book::_bookNum=0;
double Book::_sumPrice=0.0;

int main()
{
Book b1("c++ Primer",105);
Book b2("c++ Primer plus",98);
b1.display();
b2.display();
return 0;
}

这样就好了,静态成员一定要先初始化。

解决方案二:

类中定义一个static数据成员,为什么还要在类外定义?

解决方案三:

一开始包含的头文件:iostream和string

时间: 2024-09-30 04:38:14

C++ 类,如何用类似字符串的东西定义一个数据成员?的相关文章

c++-C++中对类的一个数据成员排序,为什么排序不了

问题描述 C++中对类的一个数据成员排序,为什么排序不了 #include #include #include #include class List; class person { public: friend class List; private: person() {next=0;} person *next; char name[10],sex[5],tel[15],ads[20],code[10],mail[20],QQ[15],category[15]; }; class List

我的Java开发学习之旅------&amp;gt;工具类:Java获取字符串和文件进行MD5值

ps:这几天本人用百度云盘秒传了几部大片到云盘上,几个G的文件瞬秒竟然显示"上传成功"!这真让我目瞪口呆,要是这样的话,那得多快的网速,这绝对是不可能的,也许这仅是个假象.百度了一下才发现所谓的"秒传"是常见的"忽略式"上传方式,就是您上传了一个文件名为111.exe,MD5为一个数,有一个网友以前也上传一个叫222.exe,MD5和您上传的文件MD5码一模一样,所以这个文件上传到服务器上的时间就很短了,这是因为别人上传过这个文件,您上传这个文件

函数调用-C++ string类里面有类似C语言里sscanf和sprintf的函数吗?

问题描述 C++ string类里面有类似C语言里sscanf和sprintf的函数吗? C++ string类里面有类似C语言里sscanf和sprintf的函数可以用吗?或者怎么简易实现从string类读入或输出字符.字符串.整型数等等.最好是库函数,有详细举例,不要太复杂. 解决方案 # include<iostream> using namespace std; int main(void) { int a; cout<<"请输入一个数字,按回车结束"&

c++-请问C++里面如何用类似next( )的方法调用文件的每一行数据

问题描述 请问C++里面如何用类似next( )的方法调用文件的每一行数据 我知道如何用 getline 读取每一行数据,但是,我现在想要先读完整个文件,然后在另外一个method中通过类似next( ) 的方法把那个文件中的下一行调用出来 比如说,我现在有一个文件有1000行,每行两个数字.我想在一个update( )方法中每次调用下一行的数据(只调用一行),但是这个文件本身在另外一个 method中读取(因为如果也在update( )中读取的话每次就重新来过了),请问这个如何实现呢? 解决方

如何用请求字符串传值给用模式窗口打开的aspx页面

请求|页面|字符串|请求|字符串 模式窗口是一种方便的当前页面扩展的方式,但是aspx文件只能作为HTM文件的IFRAME才能用这种方式调用.同时,请求字符串也是一种方便常用的页面间传值的方法,那么怎么样使两者给合起来,就是实现如何用请求字符串传值给用模式窗口打开的aspx页面呢? 我们可以用JS脚本实现这种功能: 1.调用页面代码: <script language="javascript"> function GetCorrelativeItemId() { rdl =

wpe 抓包-用wpe抓包时,不是加密包,但有类似注册码的东西怎么破?

问题描述 用wpe抓包时,不是加密包,但有类似注册码的东西怎么破? 其他内容是汉字和数字,都很清楚,就是有一段是{9B4D951B-4E30-4516-90C9-9A6BFE4E9CCE} 每次生成,怎么破?

Java工作利器之常用工具类(三)——字符串工具类-智能截取

前两篇博文简单分享了一下数字工具类,现在说说字符串工具类. 相信大家都自己封装过或者用过guava封装的Strings,但是有没有可以智能截取,比如说"截取整数第二个到倒数第二个"的字符串.你是否还需要自己写str.substring(1,str.length()-2).如果是的话,请继续往下看吧.暂时还未见过可以反向截取字符串的.一般都是substring(str, start, end)或者substring(str, len);而这里的参数都必须是正数,否则就会报错.所以为了改善

怎样创建时间Time1类Hour、Minute、Second,它们用于表示采取统一时间格式(24小时制)的一个时间。并定义一个不含参数的ToUniwersalString方法,该方法采取统一的格式返回一个字符串,它包括6个数位——两个用于表示时间,两个用于

问题描述 怎样创建时间Time1类Hour.Minute.Second,它们用于表示采取统一时间格式(24小时制)的一个时间.并定义一个不含参数的ToUniwersalString方法,该方法采取统一的格式返回一个字符串,它包括6个数位--两个用于表示时间,两个用于表示分钟,两个用于表示秒.创建Time1类的两个实例,编译和测试Time1类. 解决方案 解决方案二:publicvoidInitializeTimer(){this.timerClock.Elapsed+=newElapsedEve

istringstream字符串流,实现类似字符串截取的功能,字符串流中的put,str()将流转换成为字符串string

 1. istringstream字符串流 #include <iostream> #include <sstream> #include <string>   using namespace std;   struct MyStruct {     string str1, str2, str3;     double db;     int num;     char ch; };   void main() {     string  mystring(&qu