!测试你是不是真正的C++程序员!(技术贴 )

fengyu0276 2005-12-01 11:41:14
世界上除了细节没有别的事情,所以看看下面的问题吧!欢迎大家踊跃回答
答对6题以上说明你是合格的C++ programmer!

1.请说明下面的例子中static 关键字的用途:


①static int a = 100;

②static int func_1(int iParam)
{
...
}

③int func_2(int iParam)
{
static int b = 0;
...
};

④class CA
{
static int c;
static int func_3(int iParam);
...
};

2. 请说明下面的例子中 const 关键字的用途:

①const int d = 100;
const char * pStr_0 = “abcd”;
char * const pStr_1 = “ABCD”;

②class CB
{
int func_4(int iParam) const;
int func_5(int iParam);
...
};

3。 在下面的func_4()的实现中,哪些语句是不合法的?
int CB::func_4(int iParam) const
{
d ++;
int * pd = &d;
*pd ++;

pStr_0[0] = 0;
pStr_0 = pStr_1;

pStr_1[0] = 0;
pStr_1 = pStr_0;

...
}

4。 有关内存申请和释放

// 请说明下面两种方式申请内存有何异同
// 方式 1
int *p1;
p1 = malloc(sizeof(int)*100);
// 方式 2
int *p2;
p2 = new int [100];





5。请说明下面两种方式申请内存有何异同
struct _st
{
int a;
int b;
...
} * st_1, *st_2
// 方式 1
st_1 = malloc(sizeof(_st)*100);
// 方式 2
st_2 = new _st [100];





6。 请说明下面两种方式申请内存有何异同
class CA
{
public:
CA();
~CA();
...
} * ca_1, *ca_2
// 方式 1
ca_1 = malloc(sizeof(CA)*100);
// 方式 2
ca_2 = new CA [100];



7。 请说明下面几种方式释放内存有何异同
int *p;
p = new int [100];
// 方式 1
free(p);
// 方式 2
delete p;
// 方式 3
delete [] p;






8 请说明下面几种方式释放内存有何异同
class CA
{
public:
CA();
~CA();
...
} * pCA;
pCA = new CA [100];
// 方式 1
free(pCA);
// 方式 2
delete pCA;
// 方式 3
delete [] pCA;
...全文
339 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengyu0276 2005-12-01
  • 打赏
  • 举报
回复
继续讨论——
manplus 2005-12-01
  • 打赏
  • 举报
回复
mark
foochow 2005-12-01
  • 打赏
  • 举报
回复
作业帖?
guest0708 2005-12-01
  • 打赏
  • 举报
回复
小儿科的题目!
dragonzxh 2005-12-01
  • 打赏
  • 举报
回复
1:
1.静态成员变量
2.静态成员函数
都只能在本文件内使用
3.一般用来记录类的使用次数
4.变量可纪录上一次的使用状态。
函数仅能访问static成员
2:
1.常量
修饰char
修饰*

2.函数func_4内无成员变量改变

3。似乎每一句都不合法。。。。
4new delete调用构造和析构函数
malloc free 不调用构造和析构函数
moany 2005-12-01
  • 打赏
  • 举报
回复
①static int a = 100; //静态全局变量,编译单元内可见

②static int func_1(int iParam) //限制函数的作用域,该函数只能被同一个文件中的其他函数调用,而其他文件中不能调用该 函数了
{
...
}

③int func_2(int iParam)
{
static int b = 0;//静态局部变量,只初始化一次
...
};

④class CA
{
static int c; //静态数据成员,属于类而不是对象
static int func_3(int iParam);//静态成员函数,不必通过某个对象调用
...
};
HelloIvan2005 2005-12-01
  • 打赏
  • 举报
回复
up,不想再写了,都是 C++ fundamentals
HelloIvan2005 2005-12-01
  • 打赏
  • 举报
回复
1.
1)静态全局变量,文件内可见
2)文件内可见。
3)静态变量,函数内可见,一次初始化。
4)静态数据成员,成员函数。限制于本类,但是是所有对象共有一份副本, 没有this指针。在访问上静态成员函数只能访问静态成员变量,或者调用静态成员函数。

2。 const 榜定最近的,所以根据这个原则问题就明了了:
1)const int 常量
字符窜是常量,指针不是常量,所以作用就很清楚了.
指针时常两,但字符窜不是常量,所以作用就很清楚了.
函数不能改变成员变量的值.
3
d++//常量
int *p = &d//const int *p = &d
*pd ++;//
pStr_0[0] = 0;
pStr_0 = pStr_1;

pStr_1[0] = 0;
pStr_1 = pStr_0;
都非法




fflush 2005-12-01
  • 打赏
  • 举报
回复
try一下
1。static int a = 100; //定义一个全局变量,仅能在本文件中使用
static int func_l(int iParam){...}//一个函数,仅能在本文件中使用
static int b = 0;//这里是一个静态变量,他在函数多次调用中一直存在
class CA
{
static int c;//CA的所有实例中仅存在一份c
static int func_3(int iParam);//仅能访问static成员的函数,称为类方法
}

2。
①const int d = 100;//整形常量
const char * pStr_0 = “abcd”;//指向常量的指针
char * const pStr_1 = “ABCD”;//常量指针,该声明应该是非法的,"ABCD"被视为常量

②class CB
{
int func_4(int iParam) const;//该方法不会修改类成员
int func_5(int iParam);//没有const -_-b
...
};

3。
int CB::func_4(int iParam) const
{
d ++;//d是常量,不合法
int * pd = &d;//d是常量,不能用变量指针指向它
*pd ++;//既然上一句不合法,这一句就没有意义了

pStr_0[0] = 0;//不合法
pStr_0 = pStr_1;//合法

pStr_1[0] = 0;//不合法,见2
pStr_1 = pStr_0;//不合法

...
}

4。
// 请说明下面两种方式申请内存有何异同
// 方式 1
int *p1;
p1 = malloc(sizeof(int)*100);
// 方式 2
int *p2;
p2 = new int [100];
效果上我认为是相同的,new与malloc的区别在于new会调用对象的构造函数,不过对于内置数据类型int,这两者是一样的

5。同上,编译器并不会_st生成默认的构造函数。

6。这里有区别,也就是构造函数调用与否

7。对于本题而言,3者相同

8。
free(pCA);//释放CA的空间
delete pCA;//释放CA的空间,在此之前,调用CA[0]的析构函数
delete [] pCA;//释放CA的空间,在此之前,调用CA[0]~CA[99]的析构函数
qinxiaolin 2005-12-01
  • 打赏
  • 举报
回复
先UP 一下!
fengyu0276 2005-12-01
  • 打赏
  • 举报
回复
up
ascmvi 2005-12-01
  • 打赏
  • 举报
回复
看看书,了解一下基础知识先
lxpws 2005-12-01
  • 打赏
  • 举报
回复
基础中的基础。。。
yefu2000 2005-12-01
  • 打赏
  • 举报
回复
上面达人都说了,偶就不说了,接分~
snowmansh 2005-12-01
  • 打赏
  • 举报
回复
基础是重要, 也不能太基础了。
jsjjms 2005-12-01
  • 打赏
  • 举报
回复
没有意思!
sankt 2005-12-01
  • 打赏
  • 举报
回复
题目有些简单
等会再看看
fengyu0276 2005-12-01
  • 打赏
  • 举报
回复
继续散分
oyljerry 2005-12-01
  • 打赏
  • 举报
回复
看看书,了解一下基础知识先
beiyu95 2005-12-01
  • 打赏
  • 举报
回复
学习学习。
加载更多回复(3)

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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