C++题目总结3

1.指针的值是一个地址,而*为取出地址中的值操作。

cout一个char*类型的相当于输出字符串,但是cout一个int*类型的就是输出地址了,比如

char* p = "abc";
cout << p << endl;
//abc
cout << *p << endl;
//a
int *p = &x
cout << p << endl;
//x的地址

 

2.如果一个类的构造函数只有一个参数,或者其他的都有默认值,那么就存在隐式转换的可能性。可以用关键字explict拒绝这种隐式转换。

 

 

3.C语言中逗号运算符的优先级最低,其次是有关赋值的运算符排在倒数第二(c++为倒数第三,倒数第二为throw)。记不清的话可以多加点括号,无伤大雅而且可理解性更好。

 

 

4.成员函数都有隐藏的this指针,而且如果为常成员函数,函数后面的const修饰的是this。

 

 

5.函数指针的格式为:函数返回类型  (指针)  (参数)。

 

6.typedef 和define的区别,注意一切define都是替换!

#define dP int *
typedef int* tP;

int main()
{
dp a, b;
tP c, d;
}

除了b,其他都是指向int类型的指针

 

7.常对象只能调用常成员函数,因为只有常成员函数才能保证(注意保证两个字)不修改值。

 

8.sizeof数组名和sizeof指针不一样,当数组名通过参数传递时,在被调用的函数那边,数组会自动转换成指针。

 

 

9.malloc直接申请的是虚拟内存,不是物理内存

 

10.对函数指针赋值,加不加取地址符号(&)都一样,但是不能加(),()的意思是调用。函数指针在定义时带形参是可以的。

 

 

 

11.函数压栈的顺序是从右到左。

 

 

12.单目运算符的优先级一般都高于双目运算符。

 

 

13.gets函数接受一段字符串,直到遇到回车位置,并把回车转换为'\0'

 

 

14.如果一个类名ClassA,ClassA a表示声明定义了一个a,并调用了默认构造函数。而ClassA a(),你的本意是调用默认构造函数,但是编译器会这是一个函数声明。

 

 

15.非常量引用的初始值必须为左值。

在标准C++语言中,临时量(术语为右值,因其出现在赋值表达式的右边)可以被传给函数,但只能被接受为const &类型。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值