c++对象编程求教!

c++对象编程求教!,第1张

一、单项选择题

1用来构成C++程序文件的基本单位是( C )。

A字符 B语句 C函数 D表达式

2、在下列符号常量定义中,错误的定义是( C )。

Aconst double DD=314; Bconst int M=20;

Cconst char ch; Dconst bool mark=ture;

3下面给字符数组赋初值时,正确的语句是( A )。

Achar s1[]="abcdef";

Bchar s2[4]="abcd";

Cchar s3[2][3]={"abc","xyz"};

Dchar s4[4][]={'a','x','s','t'};

4假定一条定义语句为“int a[10],x, pa=a;”若要把数组a中下标为3的元素值赋给x,则不正确的语句为( D)。

Ax=pa[3]; Bx=(a+3);

Cx=a[3]; Dx= pa+3;

5在一个完整类的定义中,应包含有( D )成员的定义。

A数据 B函数 C数据和函数 D数据或函数

6假定AA为一个类,a()为该类共有的函数成员,X为该类的一个对象,则访问X对象中函数成员a()的格式为( B )。

Axa Bxa() Cx->a Dx->a()

7假定AA是一个类,abc()是该类的一个成员函数,则参数表中隐含的第一个参数的标识符为( C )。

Aabc Bint Cthis Dbool

8对于一个类的构造函数,其函数名与类名( A )。

A完全相同 B基本相同 C不相同 D无关系

9假定AB为一个类,则执行“AB s=new AB(a,5);”语句时得到的一个动态对象为( B )。

As Bs->a Csa Ds

10若派生类公有继承基类,则基类的公有和保护成员在派生类中将( D )成员。

A全部变成公有 B全部变成保护

C全部变成私有 D仍然相应保持为公有和保护

二、填空题

1C++语言是在_C____语言的基础上发展起来的。

2假定x=5,y=6,则执行表达式 y =x++后,y的值为____30___。

3在if语句中,每个else关键字与它同层次并且最接近的___if___关键字相配套。

4一维字符组a[20]能够储存的字符串的长度至多为___20____。

5假定p所指对象的值为25,p+1所指对象的值为42,则执行p++运算后,p所指对象的值为___42____。

6若采用p->abc(y)表达式调用一个成员函数,在成员函数中使用的__this_____就代表了类外的p指针。

7一个类中定义的数据成员或函数成员,可以使用____种保护属性中的一种。

8假定用户只为类AB定义了一个构造函数“AB(int aa, int BB=0){a=aa; b=bb;}”,则定义该类的对象时,其初始化实参表中至少带有___1__个实参。

9在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的__成员函数________。

10重载一个运算符时,该运算符的优先级、__结合律________以及运算对象的个数都不允许改变。

三、程序填充题(在横线上填写上合适的内容)

1对数组a中的元素按相反次序重新排列。

void PV(int a[],int n)

{

int i;

for(i=0,i<n/2;_i++_________){

int x=a[i];

a[i]=__a[n-i-1]__;

a[n-i-1]=x;

}

}

2把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的输出结果为“2 2 2 3”,输入50时得到“2 5 5”,输入37时得到的结果为37。

#include<iostreamh>

void main()

{

int x;

cout<<"请输入一个整数,若小于三则重输:";

do cin>>x;while(____x<3__________);

int i=2;

do{

while(x%i==0){cout<<i<<'';x/=i;}

_____i++________;

}while(i<x);

if(x! =1) cout<<x;

}

3假定有定义为“struct NODE{int data; NODE next;};”,下面算法遍历输出以参数L为表头指针的单链表中每个结点的值。

void f6(NODE L)

{

if(_____L==NULL_____) return;

NODE P=L;

while(p){

cout<<p->data<<'';

p=_p->next__;

}

cout<<endl;

}

4类A的定义

class A {

char a;

public:

A(){a=0;}

A(char aa){ //定义带参构造函数

a=__new__char[strlen(aa)+1]; //进行动态存储分配

strcpy(a,aa); //用aa所指字符串初始化a所指向德动态存储空间

}

___~A()_________________{delete []a;} //定义析构函数

};

四理解问答题(分别写出前两题的运行结果和后两题的函数功能)

1#include<iomaniph>

const int M=20;

void main()

{

int c2,c3;

c2=c3=0;

for(int i=1;i<=M;i++){

if(i%2==0)c2++;

if(i%3==0)c3++;

}

cout<<c2<<''<<c3<<endl;

}

运行结果:

过程:

0 0

1 0

1 1

2 1

2 1

3 2

3 2

4 2

4 3

5 3

5 3

6 4

6 4

7 4

7 5

8 5

8 5

9 6

9 6

10 6

结果:

10 6

2#include<iostreamh>

class A{

int a,b;

public:

A(){a=b=0;}

A(int aa,int bb){a=aa;b=bb;}

int Sum(){return a+b;}

};

void main(){

A x(12,46);

cout<<x Sum()<<endl;

}

运行结果:

58

3void fun5(char a,const char b)

{

while(b)a++=b++;

a='\0';

}

函数功能:

将b的值赋给a

4bool fun8(int a[],int n,int key)

{

for(int i=0;i<n;i++)

if(a[i]==key)return true;

return false;

}

函数功能:

查找数组a中有没有key,如有返回true,否则返回false

五编程题

1按照下面函数原型语句编写一个递归函数求出并返回数组a中n个元素的平方和。

int f(int a[],int n)

{

if(n>0)

return a[n]+f(a,n-1)

else

return 0;

}

2根据下面类中拷贝构造函数的原型写出它的类的类外定义。

class Array{

int a; //指向动态分配的整型数组空间

Int n; //记录数组长度

public:

Array(int aa[],int nn); //构造函数,利用aa数组长度nn初始化n,

//利用aa数组初始化a所指向的数组空间

Arrsy(const Array&aa) //拷贝构造函数

};

//在下面写出拷贝构造函数的类外定义

Array::Array(Array& aa) {

n=aan;

a=new int[n];

for(int i=0; i<n; i++) a[i]=aaa[i];

}

求采纳为满意回答。

JSON-C实现了一个引用计数对象模型,它允许您轻松地使用C语言来构建JSON对象,将它们输出为JSON格式的字符串,并将JSON格式字符串解析回JSON对象的C语言表示形式。它的目标是符合 RFC 7159 标准。

使用automake的编译过程如下:

使用cmake编译的过程如下:

cmake可选的几个编译选项为:

要使用json-c,最简单的方式是包含jsonh头文件即可,或者最好是下列更具体的头文件之一:

详细且全面的API介绍文档: >

json中取出对象的属性值步骤如下:

1、打开vscode,创建一个测试页面JsonTesthtml,用于演示在js中如何获取json对象的属性集合。

2、在测试页面中,定义一个js变量,将其赋值为json格式的字符串,用于模拟从后台返回过来的json字符串值,以及后续转换为json对象,和获取其属性集合。var json = "[{\"Col1\": \"Hello\", \"Col2\": \"World\"}, {\"Col1\": \"您好\", \"Col2\": \"世界\"}]"。

3、使用js的eval函数,将json字符串的变量值,转换为json对象。var $json = eval("(" + json + ")");

4、得到json对象之后,使用for-in循环语句,得到json对象的序号,也就是,这个json对象中,还有多少个子对象。

5、因为js是弱类型的语言,并不要求json对象中的每个子对象属性都一样。所以,在得到序号之后,使用Objectkeys($json[i]); 就能获取到当前json子对象的属性集合。

6、如果想要获取到json对象的每个具体的列名和值,就需要再加一个for循环,遍历列名,得到列名和值。

关于snmp编程的资料其实很多。我建议你下载net-snmp开发包,看看里面的代码!他是用C语言编写的,编译后可以linux系统上测试。现成api是没有,不过你可以在这个开发包找到很多有用的函数。你可以重点看一下asnc(有关ber编码文件)snmp_apic(解析封装snmp包的)。你把这些文件好好整理一下,就可以得到自己的api,这就是最好的列子。

我自己动手写过snmp协议,实现get、getnext、set、snmptrap命令。代码不会很长,只有几千行。

如果有问题发邮件到wmz303@126com进行交流

associatedObject又称关联对象。顾名思义,就是把一个对象关联到另外一个对象身上。使两者能够产生联系。

这样我们就可以通过associatedObject在运行时给cagetory添加getter和setter。因为category中添加的property不会生成带下划线"_"的成员变量以及getter和setter的实现。所以可以通过关联对象实现getter和setter。

objc_setAssociatedObject(id object, const void key, id value, objc_AssociationPolicy policy)

参数一:id object : 给哪个对象添加属性,这里要给自己添加属性,用self。

参数二:void == id key : key值,根据key获取关联对象的属性的值,在objc_getAssociatedObject中通过次key获得属性的值并返回。

参数三:id value : 关联的值,也就是set方法传入的值给属性去保存。

参数四:objc_AssociationPolicy policy: 策略,属性以什么形式保存。

objc_getAssociatedObject(id object, const void key);

参数一:id object : 获取哪个对象里面的关联的属性。

参数二:void == id key : 什么属性,与objc_setAssociatedObject中的key相对应,即通过key值取出value。

总结:

关联对象并不存储在被关联对象本身内存中,而是有一个全局统一的 AssociationsManager中

一个实例对象就对应一个ObjectAssociationMap,

而ObjectAssociationMap中存储着多个此实例对象的关联对象的key以及ObjcAssociation,

ObjcAssociation中存储着关联对象的value和policy策略

你好,在c++中,此时的rect相当于c++中的一个类对象或一个结构体对象,x1是这个类或结构体中的成员。 且在此时,rect定义在栈中,直接通过 [类名或结构体名] rect 来定义。所以是rectx1,相当于调用rect中的成员变量。(如果rect定义在堆中,即

以上就是关于c++对象编程求教!全部的内容,包括:c++对象编程求教!、JSON解析器json-c、json中怎么取出对象的属性值啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10154975.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存