12day---C++面试题

1.两个指针变量不可以 相加
解:两个指针相加没有意义,就好像宾馆房间号一样,两个房间号相加,没有意义。但是房间号可以加上一个整数,如我住601,你的房间号比我大5
2.下面程序的输出结果是:出错

char *p1 = "123",*p2 = "ABC",str[50]="xyz";
strcpy(str+2,strcat(p1,p2));
cout<<str;

解:p1和p2指向的是常量存储区的字符串常量,没法连接,会有问题。
3.有函数定义

void test(int a){}
void test(loat a ){}

则以下调用错误的是B
A test(1)
B test(‘C’)
C test(2+‘d’);
D test(0.5)
解:0.5类型模糊,既匹配int类型也匹配float类型
4.有如下代码,result的最终结果是 11

#include<iostream>
using namespace std;
int i = 1;
class MyCls{
public:
	MyCls():m_nFor(m_nThd),m_nSec(i++),m_nFir(i++),m_nThd(i++){
		m_nThd = i;
	}
	//m_nFir(i++) m_nFir = 1 i = 2
	//m_nSec(i++) m_nSec = 2 i= 3
	//m_nThd(i++) m_nThd = 3 i= 4
	//m_nFor(m_nThd) m_nFor= 4
	//m_nThd = i; m_nThd  = 4
	void echo(){
		cout<<"result:"<<m_nFir+m_nSec+m_nThd+m_nFor<<endl;
	}
private:
int m_nFir;
int m_nSec;
int m_nThd;
int m_nFor;
};
int main()
{
	MyCls oCls;
	oCls.echo();
	return 0;	
}

解:
初始化的顺序就是声明的顺序,与初始化的列表顺序无关
m_nFir(i++) m_nFir = 1 i = 2
m_nSec(i++) m_nSec = 2 i= 3
m_nThd(i++) m_nThd = 3 i= 4
m_nFor(m_nThd) m_nFor= 4
m_nThd = i; m_nThd = 4

5.关于虚函数的知识点
(1)虚函数的定义:被virtua关键字修饰的成员函数,就是虚函数,可以有子类继承并重写的函数,后期绑定。java中普通的成员函数就是虚函数
(2)可以加上final关键字变成非虚函数
(3)如果不是纯虚函数,也就是基类不是抽象类的话,虚函数在子类中可以不实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值