c++中类内的函数怎么调用

voidbookmanger::add()//bookmanger类已经定义好了,add函数也写完整了,但是调用的时候怎么调用啊我调用的时候写的是bookmanger::... void bookmanger::add() //bookmanger类已经定义好了,add函数也写完整了,但是调用的时候怎么调用啊

我调用的时候写的是
bookmanger::add();
但是编译出错:cannot call function"bookmang::add()"without object
谁能解释一下是怎么回事啊
展开
 我来答
_择一城终老123
高粉答主

推荐于2019-09-15 · 醉心答题,欢迎关注
知道答主
回答量:22
采纳率:100%
帮助的人:5802
展开全部

你必须先创建一个bookmanger副本,然后用
bookmanger bm;
bm.add()
或者,
bookmanger *bm = new bookmanger();
bookmanger->add()调用。

如果你一定要用类名来调用,可以定义函数为static:static void bookmanger::add()。

函数中的manager拼错了,应该是bookmanager。

c++构造函数:C++用以初始化对象的数据成员的一种函数。完好定义的类一旦建立,就可看成完全封装的实体,可以作为一个整体单元使用。类的实际内部工作隐藏起来,使用完好定义的类的用户不需要知道类是如何工作的,只要知道如何使用它即可。

扩展资料

构造函数作用:

初始化对象的数据成员,规则:构造函数与类同名且无返回值,在对象实例化时自动调用、构造函数可以有多个重载形式、实例化对象时仅用到一个构造函数、当用户没有定义构造函数时,编译器自动生产一个构造函数。

编译系统为对象的每个数据成员(m_strName)分配内存空间,并调用构造函数School()自动地初始化对象的m_strName值设置为"bullworth"。

在C++中,类是支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类支持数据封装和数据隐藏。

在面向对象的程序设计中,将数据和对该数据进行合法操作的函数封装在一起作为一个类的定义。对象被说明为具有一个给定类的变量。每个给定类的对象包含这个类所规定的若干私有成员、公有成员及保护成员。

参考资料:百度百科-c++构造函数

49995gxyyj
推荐于2019-10-27 · TA获得超过1万个赞
知道答主
回答量:93
采纳率:100%
帮助的人:1.3万
展开全部

函数调用的一般形式为:

函数名(实参列表);

实参可以是常数、变量、表达式等,多个实参用逗号分隔。

在C语言中,函数调用的方式有多种,例如:

// 函数作为表达式中的一项出现在表达式中

z = max(x, y);

m = n + max(x, y);

// 函数作为一个单独的语句

printf("%d", a);

scanf("%d", &b);

// 函数作为调用另一个函数时的实参

printf( "%d", max(x, y) );

total( max(x, y), min(m, n) );

在函数调用中还应该注意的一个问题是求值顺序。所谓求值顺序是指对实参列表中各个参数是自左向右使用呢,还是自右向左使用。对此,各系统的规定不一定相同。

参考资料:C++ 百度百科

拓展资料:

C++是在C语言的基础上开发的一种面向对象编程语言,应用非常广泛。常用于系统开发,引擎开发等应用领域,支持类、封装、继承、多态等特性。C++语言灵活,运算符的数据结构丰富、具有结构化控制语句、程序执行效率高,而且同时具有高级语言与汇编语言的优点。

C++语言是对C语言的扩充,从Simula中吸取了类,从ALGOL语言中吸取了运算符的一名多用、引用和在分程序中任何位置均可说明变量,综合了Ada语言的类属和Clu语言的模块特点,形成了抽象类,从Ada Clu和ML等语言吸取了异常处理,从BCPL语言中吸取了用//表示注释C++语言保持了C语言的紧凑灵活、高效以及易于移植性强等优点,它对数据抽象的支持主要在于类概念和机制,对面向对象风范的支持主要通过虚拟机制函数因C++语言既有数据抽象和面向对象能力,运行性能高,加上C语言的普及,而从C语言到C++语言的过渡较为平滑,以及C++语言与C语言的兼容程度可使数量巨大的C语言程序能方便地在C++语言环境中复用,使C++语言在短短几年内能流行。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杭玟玉N
推荐于2017-11-23 · TA获得超过180个赞
知道小有建树答主
回答量:129
采纳率:0%
帮助的人:0
展开全部
不能用类名调用,要用对象名来调用,比如你可以这样做:先定义一个对象,再用这个对象来调用函数:
bookmanger bm1;
bm1.add();
如果你一定要用类名来调用,可以定义函数为static:
static void bookmanger::add()
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wo370506875
2010-06-15 · TA获得超过313个赞
知道小有建树答主
回答量:453
采纳率:0%
帮助的人:305万
展开全部
先实例化一个对象,bookmanager bm1;
bm1.add();这样调用。
bookmanger::add()这样的调用方法只有在有方法覆盖或重写时才能调用,或者将该方法设为静态方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
河蟹和谐河蟹
2010-06-15 · TA获得超过1156个赞
知道小有建树答主
回答量:1028
采纳率:0%
帮助的人:780万
展开全部
你必须先创建一个bookmanger副本,然后用
bookmanger bm;
bm.add()
或者
bookmanger *bm = new bookmanger();
bookmanger->add()调用。

还有
你的manager拼错了。。因该是bookmanager
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式