C/C++/OC自测题

简介: C++: 1.String 的具体实现 已知String类定义如下: class String {     public:     String(const char *str = NULL); // 通用构造函数     String(co...


C++:

1.String 的具体实现

已知String类定义如下:

class String

{

    public:

    String(const char *str = NULL); // 通用构造函数

    String(const String &another); // 拷贝构造函数

    ~ String(); // 析构函数

    String & operator =(const String &rhs); // 赋值函数

    private:

    char *m_data; // 用于保存字符串

};

尝试写出类的成员函数实现。


2.C++中的classstruct的区别

3.既然C里面已经有了malloc、free,为什么还要new、delete

4.请写出下面程序的输出结果

#include <iostream>

using namespace std;


class A{

public:

    A(){cout<<"A"<<endl;func();}

    virtual void func(){cout<<"funcA"<<endl;}

    virtual ~A(){cout<<"~A"<<endl;};

};

class B:public A{

public:

    B(){cout<<"B"<<endl;func();}

    virtual void func(){cout<<"funcB"<<endl;}

    virtual ~B(){cout<<"~B"<<endl;};

};


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

{

    A *a = new B;

    delete a;

    return 0;

}



IOS:

选择题

1.Person *person = [[Person alloc]initWithObjects:@"11", nil]; 

[person release];

NSLog(@"%d", person.retainCount);会输出多少?

A.0      B.-1      C.1    D.错误,直接崩溃


2.NSString *aa = @"Simple Audio Engine"; 

NSLog(@"%@",[aa substringToIndex:8]);会输出什么?

A.Simple Au      B.A      C.Simple A    D.u


3.变量命名正确的是:

A.2A      B._AA      C..AA    D.-AA


4.int a = 0; -+a--; NSLog(@"%d",a);会输出什么?

A.0      B.-1      C.1    D.不确定


5.NSString *str = @"a123";NSLog(@"%d",[str intValue]);会输出什么?

A.0      B.123      C.123a    D.不确定


6.已知int a = 6;则执行 a+=a-=a*a;语句后,a的值为

A.36      B.0      C.-24    D.-60


7.NSString *str = @"a123"; NSLog(@"%@",(str == @"123")?@"yes":@"no");会输出什么?

A. yes      B. no      C.不确定   D.错误


8.@[@"a",@"b"];该类型是

A.字符串对象      B.字典对象      C.数组对象    D.集合对象


9.多态的定义是:

A.来自不同对象可以接受同一消息的能力      

B.来自不同类的对象可以接受同一消息的能力      

C.来自不同的类可以接受同一消息的能力    

D.以上都不是


10.下列条件语句中,功能与其他语句不同的是

A.if(a) printf("%d\n",x); else printf("%d\n",y);

B.if(a=0) printf("%d\n",y); else printf("%d\n",x);

C.if (a!=0) printf("%d\n",x); else printf("%d\n",y);

D.if(a==0) printf("%d\n",x); else printf("%d\n",y);


11.已知 char s[20],*p=s,则在下列语句中,错误的是

A.p=s+5

B.s=p+s

C.s[2]=p[4]

D.*p=s[0]


12.若w=1,X = 2,y= 3,z=4,则条件表达式w<x?w:y<z?y:z的值是:  

    A.表达式错误      B.-1      C.0       D.1

13.以下for循环语句 for(;;) printf("**");

A.判断循环结束的条件不合法

B.是无限循环

C.一次也不执行

D.只执行一次


14.以下关于子类和父类的叙述中,正确的是

A.代码中使用父类对象的地方,都可以使用子类对象进行替换

B.代码中使用子类对象的地方,都可以使用父类对象进行替换

C.父类定义的对象与子类定义的对象在属性和方法上一定相同

D.父类定义的对象与子类定义的对象在属性和方法上一定不同


15.下面四个选项中,均是合法浮点数的选项是

A.+1e+1      B.-.60      C.123e       D.-e3 

   5e-9.4        12e-4        1.2e-.4       .8e-4

   03e2          -8e5         +2e-1         5.e-0


简答题

1.NSString *a = @"abc";   a能添加到定义好的NSArray里面吗


2.浅复制和深复制的区别?


3.简要说说继承与分类的区别


4.简要说说正式协议与非正式协议的区别


5.简要说说可变对象与不可变对象的不同之处


6.简要说说对象的生命周期


7.对于属性@property里的参数列表什么时候用retain, 什么时候用copy


8.阐述一下 person.money=100; 和 int num = person.money 的区别


9.retain,assign,copy,nonatomic,atomic, readwrite,readonly属性的作用


10.self/super 的区别


11.id 声明的对象有什么特性?


12.分析一下NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"123", nil]; 和  NSMutableArray *arr = [[NSMutableArray alloc]initWithObjects:@"123", nil];的区别


13.用宏定义MIN输入两个参数输出最小值


14.请描述自动释放池的工作原理


15.为什么重写父类方法都需要去重新调用父类的方法,如self = [super init];





1.用分类对NSMutableArray扩展实现对数组的大小排序。


2.对字符串对象 @"Hello World!"改为@"Hello Man!"


3.定义 Man类 和 Women 类   ,实现 women对象的run方法委托给man对象去做


4.一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。



5.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。














相关文章
|
iOS开发 C++
[iOS]深入理解__bridge - OC对象与C++对象的引用转换
### 0x0 crash 昨天在iOS Geekers钉钉群里聊到一个问题, 下面的代码会crash: ``` void* a = new char; id ext = (__bridge id)a; ``` crash现场如图: ![screenshot](http://img4.tbcdn.cn/L1/461/1/4e9d2cc9803f4577de30ac
9789 0
|
编译器 开发工具 C语言
OC代码转C++代码的生成
OC代码转C++代码的生成
611 0
OC代码转C++代码的生成
|
C++
oc/c/c++混编老文,写的很好,mark
http://blog.csdn.net/gf771115/article/details/9664393
815 0
|
C语言 C++ iOS开发
[c/c++/OC]高质量的面试题及答案及注解
  一、  选择题 C语言: 1. 声明语句为int a[3][4]; 下列表达式中与数组元素a[2][1]等价的是( A )。 A、*(a[2]+1)      B、a[9]   C、*(a[1]+2)         D、*(*(a+2))+1  a[2] *(a+2)是等价的 C两个数反过来了,D、1放进去 2.
1275 0
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
编译器 C++ 容器
【c++11】c++11新特性(上)(列表初始化、右值引用和移动语义、类的新默认成员函数、lambda表达式)
C++11为C++带来了革命性变化,引入了列表初始化、右值引用、移动语义、类的新默认成员函数和lambda表达式等特性。列表初始化统一了对象初始化方式,initializer_list简化了容器多元素初始化;右值引用和移动语义优化了资源管理,减少拷贝开销;类新增移动构造和移动赋值函数提升性能;lambda表达式提供匿名函数对象,增强代码简洁性和灵活性。这些特性共同推动了现代C++编程的发展,提升了开发效率与程序性能。
529 12
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
277 0