您的位置:首页 > 编程语言

编程小题

2014-04-11 22:58 309 查看
此贴后续会继续更新。

//求质因数 (微策略)

vector< int> v;
bool flag = true;
void func(int num)
{
for( int i = 2; i<=num; ++i)
{
if(!(num%i) && flag)
{
v.push_back(i);
func(num/i);
break;
}
}
}


[align=left]//析构函数 (eBay)[/align]
#include <cstdio>
class A
{
public :
int num;
A()
{
printf( "created\n" );
}
~A()
{
printf( "%d deleted\n" , num);
}
};

int main()
{
A ins;
ins.num = 1;
A*b = new A();
b->num = 2;
return 0;
}


[align=left]created当然有两个,但只输出一个deleted,1 deleted.[/align]

[align=left]//多态 (eBay)[/align]
class A
{
public :
int num;
virtual void func()
{
printf( "A\n" );
}
};

class B : public A
{
public :
void func()
{
printf( "B\n" );
}
};

class C : public A
{
public :
void func()
{
printf( "C\n" );
}
};

void test(A& a)
{
a.func();
};

int main()
{
B b;
test(b);
C c;
test(c);
return 0;
}
输出
[align=left]B[/align]
[align=left]C[/align]

//生命周期(腾讯)

#include<cstdio>
#include<string.h>
#include<cstdlib>

char* func()
{
char ch[]="1xyz";
return ch;
}

int main()
{
char*q = func();
printf("%s\n", q);
return 0;
}
输出无法确定。

//二级指针(腾讯)

void func(char**p)
{
*p+=2;
}

int main()
{
char* q[] = {"123", "456", "789"};
func(q);
printf("%s\n", *q);
return 0;
}


输出:3

//c++ 多态(腾讯)

class A
{
public:
void func1(int x){printf("11\n");}
virtual void fun1(char y){printf("xx\n");}
};

class B : public A
{
public:
void func1(char y){printf("22\n");}
virtual void func1(int x){printf("yy\n");}
};

int main()
{
A a;
a.func1(1);
a.func1('1');
B b;
b.func1(0);
b.func1('c');
return 0;
}

输出
11

11

yy

22

//虚函数(腾讯)

class A
{
public:
~A(){printf("A destruction\n");}
};

class B : public A
{
~B(){printf("B destruction\n");}
};

int main()
{
A* p = new B;
delete p;
return 0;
}


只输出A destruction.

A的析构函数前加上virtual,则输出

B destruction

A destruction
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: