面试题

1、
#include <iostream>
class Test
{
public:
	void print()
	{
		printf("print null\n");
	}
	void set(int n)
	{
		m_val = n;
		printf("%d\n ",m_val);
	}
private:
	int m_val;
};
int main()
{
	Test *a =NULL;
	a->print();
	a->set(10);
    return 0 ;
}

编译通过,运行输出:print null

第二条不成功,提示:Access violation writing location 0x00000000.

print是一个类级别的东西,也就是说它和类的实例(或者类的对象)没有任何关系,这也就是“并未使用this指针”,在这种情况下,print仅与a的类型有关,而不管a是什么东西,实际上,你甚至可以写下面这样的代码:

((Test*)123456)->print();

对象级别的东西,比如类中的某个非静态成员变量,这种东西和类的实例有关,因此它使用this指针,这样的情况下,就不能像上面那么写了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值