1、假设A为抽象类,下列声明( )是正确的。
int fun(A);
A Obj;
A fun(int);
A *p;
抽象类不能初始化,不能当做返回值,不能当做参数,可以作为指针变量,因为此时还没有初始化
总结:1.抽象类只能用作其他类的基类,
不能定义抽象类的对象。
2.抽象类
不能用于参数类型、函数返回值或显示转换的类型
3.抽象类
可以定义抽象类的指针和引用,此指针可以指向它的派生类,进而实现多态性。
2、strlen与sizeof区别
char str[20]="0123456789"; int a=strlen(str); //a=10; int b=sizeof(str); //而b=20;
char* a = "123"; int b = strlen(a); int c = sizeof(a);
输出3 4
3、
vector<
int
>array;
array.push_back(100);
array.push_back(300);
array.push_back(300);
array.push_back(300);
array.push_back(300);
array.push_back(500);
vector<
int
>::iterator itor;
for
(itor=array.begin();itor!=array.end();itor++)
{
if
(*itor==300)
{
itor=array.erase(itor);
}
}
for
(itor=array.begin();itor!=array.end();itor++)
{
cout<<*itor<<
""
;
}
最后会输出100 300 300 500
因为每次erase后指针就会向后移动一个,再++,所以删不干净。
4、
char
* GetWelcome(
void
){
char
* pcWelcome;
char
* pcNewWelcome;
pcWelcome=
"Welcome to Huawei Test"
;
pcNewWelcome=(
char
*)malloc(strlen(pcWelcome));
//1
if
(NULL==pcNewWelcome){
return
NULL;
//2
}
strcpy(pcNewWelcome, pcWelcome);
//3
return
pcNewWelcome;
//4
}
1、3错误,1中应该是(char*)malloc(sizeof(pcWelcome)*sizeof(char)).3中strcpy是指把pcWelcome中的\0一起赋值到pcNewWelcome中,
但是上面分配内存的时候用的是strlen,此处没有声明\0的位置,所以不对。