入门级问题

阿牛138588 2009-08-23 04:47:37
文件里有内容
#include <iostream.h>
class B1
{
public:
void output();
}

void B1::output()
{
cout<<"output line"<<endl;
}

void B1::output()这个是什么意思?像接口那样实现B1的方法?

在下是从c#转向c++的,相对c#提个问题就是,在c#里所有方法都必须在类里面,这个方法看来怎么在类外面?难道c++里的方法会默认在某个类(或者命名空间)之下?

还有代码是这样的
B1 b;
b.output();
B1 b;这样声明就实例化了b? 不需要new吗?
像B1 b = new B1();
例子这样用b.output();不会出错?

谢谢!
...全文
61 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
limit_clear 2009-08-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 limit_clear 的回复:]
C/C++ code
#include<iostream.h>class B1
{public:void output();//函数声明}void B1::output()//函数的定义,::表示域操作符,一般函数定义定外面好,是类名+::+函数名的形式{
cout<<"output line"<<endl;
}
定义对象是类名+空格+对象名。
一定要用new的话:b=new B1();[/Quote]
刚少了个括号
adolthor 2009-08-23
  • 打赏
  • 举报
回复
1.c与C++一般都是遵循声明与定义分离的原则,声明放到头文件中,定义放到源码(CPP)文件中,c++一般都是这样的。当声明过output后,output就在B1的作用域下了。
2.这不需要new,需要new的是指针。
3.刚转c++的话,请学习标准c++,不要用iostream.h,要用iostream,还有这样改的话,所有的标准库方法都被放到了std命名空间中,请注意这一点
limit_clear 2009-08-23
  • 打赏
  • 举报
回复

#include <iostream.h>
class B1
{
public:
void output(); //函数声明
}

void B1::output() //函数的定义,::表示域操作符,一般函数定义定外面好,是类名+::+函数名的形式
{
cout <<"output line" <<endl;
}

定义对象是类名+空格+对象名。
一定要用new的话:b=new B1;
liao05050075 2009-08-23
  • 打赏
  • 举报
回复
class B1
{
public:
void output();
}

void B1::output()
{
cout < <"output line" < <endl;
}
只是类的成员函数在类外实现而已

B1 b;
b.output();
B1 b;这样声明就实例化了b? 不需要new吗?
这个已经实例化了。不用new

像B1 b = new B1();
这个会编译错误,C++有指针的概念
所以正确的写法应该是B1 *b=new B1();
调用output: b->output() or (*b).output()

64,636

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧