再来几个被问倒的

xiaoQ008 2009-05-12 10:48:49
1、友元函数有this指针么?
2、下列哪个是对的(一个或多个答案)
A、构造函数可以是虚函数
B、析构函数可以是虚函数
C、构造可以可以是私有函数
D、析构函数可以是私有函数
...全文
384 50 打赏 收藏 转发到动态 举报
写回复
用AI写文章
50 条回复
切换为时间正序
请发表友善的回复…
发表回复
lpf000 2009-05-13
  • 打赏
  • 举报
回复
没有,BCD
yshuise 2009-05-13
  • 打赏
  • 举报
回复
a,b,c,d全部正确的用法:
#include "stdafx.h"
#include <iostream>

class Test
{
#ifdef _not_

private:
virtual Test(const int&){}
Test()
{
std::cout<<"constructor is runing...."<<std::endl;
}
virtual ~Test()
{
std::cout<<"destrutor is runing...."<<std::endl;
}
#endif
};


int main(int argc, char* argv[])
{

Test c;
c;
printf("Hello World!\n");
return 0;
}

leanse 2009-05-13
  • 打赏
  • 举报
回复
2、下列哪个是对的(一个或多个答案)
A、构造函数可以是虚函数
B、析构函数可以是虚函数
C、构造可以可以是私有函数
D、析构函数可以是私有函数


A是不正确的,构造函数是不可以为虚的 不能提供继承机制
B是正确的;(可以自己去写一下,让父类的析构为虚或非虚,然后new一个子类对象向上转型给父类,会不同)
C是可以为虚的,大家写过复制构造函数可以使private就是禁止复制;并且private的构造函数可以被public的重载调用
D是正确的,但是不会执行
yshuise 2009-05-13
  • 打赏
  • 举报
回复
[Quote=引用 45 楼 hityct1 的回复:]
引用 1 楼 bitxinhai 的回复:
1、友元函数有this指针么? ,友元函数没有this指针
2、下列哪个是对的(一个或多个答案)BCD
A、构造函数可以是虚函数
B、析构函数可以是虚函数
C、构造可以可以是私有函数
D、析构函数可以是私有函数

顶。
一个类可以只有静态成员函数,使用的的时候直接使用静态成员函数,而不生成类的实例。所以C、D也可以。
[/Quote]你的意思是说:你不用它,所以它正确,是不是?
hityct1 2009-05-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bitxinhai 的回复:]
1、友元函数有this指针么? ,友元函数没有this指针
2、下列哪个是对的(一个或多个答案)BCD
A、构造函数可以是虚函数
B、析构函数可以是虚函数
C、构造可以可以是私有函数
D、析构函数可以是私有函数
[/Quote]
顶。
一个类可以只有静态成员函数,使用的的时候直接使用静态成员函数,而不生成类的实例。所以C、D也可以。
yshuise 2009-05-13
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 crst_zh 的回复:]
引用 42 楼 yshuise 的回复:
引用 40 楼 crst_zh 的回复:
引用 36 楼 yshuise 的回复:
35楼主测试通过。
其实只要把#define private public
这么一用,我看c,d还真是对的。


可是这样你能说它是private的吗?仅仅就这一点提问,我也同意他们可以为private

用了private这个关键字啊。能说没用private吗?

用了private,难道就是private的?
[/Quote]
private当然是private.就好像a == a , b==b
crst_zh 2009-05-13
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 yshuise 的回复:]
引用 40 楼 crst_zh 的回复:
引用 36 楼 yshuise 的回复:
35楼主测试通过。
其实只要把#define private public
这么一用,我看c,d还真是对的。


可是这样你能说它是private的吗?仅仅就这一点提问,我也同意他们可以为private

用了private这个关键字啊。能说没用private吗?
[/Quote]
用了private,难道就是private的?
yshuise 2009-05-13
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 crst_zh 的回复:]
引用 36 楼 yshuise 的回复:
35楼主测试通过。
其实只要把#define private public
这么一用,我看c,d还真是对的。


可是这样你能说它是private的吗?仅仅就这一点提问,我也同意他们可以为private
[/Quote]
用了private这个关键字啊。能说没用private吗?
pathuang68 2009-05-13
  • 打赏
  • 举报
回复
顶这个贴
crst_zh 2009-05-13
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 yshuise 的回复:]
35楼主测试通过。
其实只要把#define private public
这么一用,我看c,d还真是对的。
[/Quote]

可是这样你能说它是private的吗?仅仅就这一点提问,我也同意他们可以为private
flora186 2009-05-13
  • 打赏
  • 举报
回复
这是个好贴
duyouxuanduyouxuan 2009-05-13
  • 打赏
  • 举报
回复
Mark
thinkSJ 2009-05-13
  • 打赏
  • 举报
回复
C D也是对的,具体可以参考一下设计模式中的"单例"
yshuise 2009-05-13
  • 打赏
  • 举报
回复
35楼主测试通过。
其实只要把#define private public
这么一用,我看c,d还真是对的。
yshuise 2009-05-13
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <iostream>
class Test
{
Test()
{
std::cout<<"constructor is runing...."<<std::endl;
}
~Test()
{
std::cout<<"destrutor is runing...."<<std::endl;
}
public:
static void Text(){
Test();
}

};


int main(int argc, char* argv[])
{

Test::Text();
printf("Hello World!\n");
return 0;
}

crst_zh 2009-05-13
  • 打赏
  • 举报
回复
26楼有道理,赞一个!
yshuise 2009-05-13
  • 打赏
  • 举报
回复
static void Text(){
Test();
}上面该调用构造函数,不过是一样的通过。
机智的呆呆 2009-05-13
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 yshuise 的回复:]
28楼的错误如下:

C/C++ codeF:\Program Files\Microsoft Visual Studio\MyProjects\df\df.cpp(21) : error C2248:'Test::Test': cannot accessprivatemember declaredinclass'Test'F:\Program Files\Microsoft Visual Studio\MyProjects\df\df.cpp(8) : see declaration of'Test::Test'F:\Program Files\Microsoft Visual Studio\MyProjects\df\df.cpp(22) : error C2248:'Test::~Test': cannot accessprivatemember declare…
[/Quote]
上述代码code::blocks8.02中通过,其他编译器没有试~~
yshuise 2009-05-13
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <iostream>
class Test
{
Test()
{
std::cout<<"constructor is runing...."<<std::endl;
}
~Test()
{
std::cout<<"destrutor is runing...."<<std::endl;
}
public:
static void Text(){
Text();
}

};


int main(int argc, char* argv[])
{

Test::Text();
printf("Hello World!\n");
return 0;
}
这样也行。不过没啥意思吧
机智的呆呆 2009-05-13
  • 打赏
  • 举报
回复
友元函数,虽然定义类中,但他不是类成员函数,所以没有this
加载更多回复(30)

65,211

社区成员

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

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