c++笔试面试4

1、假设A为抽象类,下列声明( )是正确的。

int fun(A);
A Obj;
A fun(int);
A *p; 
D

抽象类不能初始化,不能当做返回值,不能当做参数,可以作为指针变量,因为此时还没有初始化

总结: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的位置,所以不对。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值