做了一套C++的题,有下面这几道题不懂。请c++达人指教:
1.若有chara[3]={‘A’,‘\0','D'},*p=a,i=2,j=4;则下列表达式不是1的有(C)A.strlen(a)B.j&&jC.*(p+1)D--i(...
1.若有char a[3]={‘A’,‘\0','D'},*p=a,i=2,j=4;则下列表达式不是1的有(C)
A.strlen(a) B.j&&j C.*(p+1) D--i
(PS:整型占2个字节)
2.假定AB为一个类,则执行“AB a(4),b[3],*p[2];"语句时,自动调用该类构造函数的次数是(B)
A 3 B 4 C 6 D 9
3.对于结构中定义的成员,其隐含访问权限为(public)
这个题很经典,但是我一直不懂这句话的意思,请高手解释一下。 展开
A.strlen(a) B.j&&j C.*(p+1) D--i
(PS:整型占2个字节)
2.假定AB为一个类,则执行“AB a(4),b[3],*p[2];"语句时,自动调用该类构造函数的次数是(B)
A 3 B 4 C 6 D 9
3.对于结构中定义的成员,其隐含访问权限为(public)
这个题很经典,但是我一直不懂这句话的意思,请高手解释一下。 展开
4个回答
展开全部
1. strlen这个函数遇到'\0'就返回 在'\0'前有一个A所以返回1 排除 &&运算符返回1或者0,当两者都为非0返回1,否则返回0, 排除 ,i==2 执行--i自然为1 所以答案为c 因为p目测是指向数组的指针,(p+1)操作是表示指针指向下一个单元及时指向了‘\0’的单元,在用*(p+1)取值自然得到的不是1
2.当然这个题可能有歧义,前提应该是这个类包含默认的构造函数和接收一个参数的构造函数,构造函数的调用是当类需要创建对象的时候,这里 创建对象a的时候以及创建类的数组的时候都需要创建对象,而创建类指针则不用创建对象 所以构造函数调用4次
3.就是说在c++中结构体其实也是被当做类的,与类不同的是里面的成员默认访问权限为public,(类的默认访问权限是private,除非你用private标记)
还有不明白么
2.当然这个题可能有歧义,前提应该是这个类包含默认的构造函数和接收一个参数的构造函数,构造函数的调用是当类需要创建对象的时候,这里 创建对象a的时候以及创建类的数组的时候都需要创建对象,而创建类指针则不用创建对象 所以构造函数调用4次
3.就是说在c++中结构体其实也是被当做类的,与类不同的是里面的成员默认访问权限为public,(类的默认访问权限是private,除非你用private标记)
还有不明白么
展开全部
例如:
struct A
{
int a;
char b;
}
这样定义的结构体的成员变量,a、b外界都是可以直接访问的。
再例如
struct A
{
public:
int a;
private:
char b;
}
这样定义的结构体中,a是公共的,b 是私有的外界无法直接访问。
也就是定义结构
struct A
{
int a;
char b;
}
隐含了
struct A
{
public:
int a;
char b;
}
struct A
{
int a;
char b;
}
这样定义的结构体的成员变量,a、b外界都是可以直接访问的。
再例如
struct A
{
public:
int a;
private:
char b;
}
这样定义的结构体中,a是公共的,b 是私有的外界无法直接访问。
也就是定义结构
struct A
{
int a;
char b;
}
隐含了
struct A
{
public:
int a;
char b;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个,C:p指向a,也是a[0],p+1,就是a[2],是\0,ascii是0;A:strlen函数在遇到\0时结束判断,故只算了1个;B &&(与),0和任何值与,结果是0,非0与非0,结果为1.
隐含访问权限默认应该是protected啊,咋会是public呢。第2个不是很明白意思
隐含访问权限默认应该是protected啊,咋会是public呢。第2个不是很明白意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一题,用排除法,A:“\0”为字符串结束标志,所以a的长度为1。B:任何数与自身相与为真,即为1。D:i=2,--后自然为1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询