C++随笔1

1.【多态性】所谓多态性,就是由于继承而关联在一起的不同类的对象,对于相同的成员函数调用作出不同反应的一种能力。C++中的多态性分为两类:编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载和模板体现的,其实现机制称为静态绑定;运行时的多态性是通过虚函数体现的,其实现机制称为动态绑定。

2.【动态绑定】通过对基类的引用或者指针调用虚函数时,发生动态绑定。换句话说,C++中的动态绑定是通过虚函数表实现的。这个虚函数表记录了虚函数的地址,能够解决继承和覆盖的问题,保证动态绑定时能够根据对象的实际类型调用正确的函数。

3.【类的成员访问】有如下类定义:

 

 class Test
{
public:
Test( )
{
a=0;
c=0;
} //①   
int f(int a) const 
{
this->a=a;
} //②   
void h(int b) 
{
Test::b=b;
} //③   
static int g( ) 
{
return a;
} //④ 
private:   
int a;   
static int b;   
const int c; 
}; 
int Test::b=0;


在标注号中,能被正确编译的是(  A       B        C       D

一个类的常数据成员的初始化只能在成员初始化列表中进行,所以选项A不正确。常成员函数不能更新对象的数据成员,所以选项B不正确。静态成员函数可以直接访问类中说明的静态成员,但不能直接访问类中说明的非静态成员,所以选项D也不正确。故应该选择C

4.【运算符结合的优先级】

x=1,y=1,z=1, 执行表达式w=++x||++y&&++z 后,xyz 的值分别为?

首先是从左往右的。

w=++x||++y&&++z

第一步:

w= (++x) || (++y&&++z);

因为||这个符号的优先级最低,先考虑++

 

第二步:

++x; 执行完之后x=2;

(对于||这个符号有个特点就是如果左边是非零,那么直接就返回值了,不用执行右边了。因为没有意义,10还是1.

 

第三步:

||左边是非零,直接结束,w=1

 

所以w=1x=2yz仍为一。

 

5.【运算符重载】运算符重载操作(overload)不改变运算符的优先级,语法,结合性和操作个数。

6.protect】在基类中声明为protected的成员可以被派生出的任何类的成员和友元访问,也可以在基类体内被基类的成员和友元访问,但在类外(比如主函数内)无法被访问。

7.new】类型名 *指针名=new 类型名。这个过程中,new类型名告诉编译器,需要适合类型名这个类型的内存空间。new根据类型确定使用多少字节的内存,然后返回这个内存的地址。实质上,变量是在编译时分配有名称的内存,而指针可以直接访问运行阶段分配未命名的内存以及内存值,使用new方法更有效。

8.【无条件大括号】求这段代码的输出结果

#include<iostream>
using namespace std; 
int i = 0; //全局i=0
int fun(int n) 
{
	static int a = 2;
	a++;
	return a+n;
} 
void main()
{
	int k = 5;  
	{   
		int i = 2;   //此时i=2
		k += fun(i);   
	}  
	k += fun(i); //此时i=0;
	cout << k;
}

大括号时用来划分开始与结束的,当大括号内部重新定义变量的时候,这个变量就成为暂时局部变量,在大括号结束之后被释放。
9.【this指针】指向当前对象的,默认隐藏的指针,用来指向你正在编辑的类将产生的对象。
#include"iostream.h"
class A
{
private:
	int x;
public:
	A(int x);
};

A::A(int x)
{
	this->x=x;//此处this->指明左边的x是对象的变量,右边的x是形参x,如果形参用y来代替,this->就可以不用写了

	cout<<x;
}
void main()
{
	A  a(5);

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值