C++中容易忽略的知识
作者:网络转载 发布时间:[ 2013/4/25 10:42:22 ] 推荐标签:
8、关于函数指针:
//①表示cmpFcn是一种指向函数的指针类型名字。
Typedef bool (*cmpFcn)(const string&,const string&);
//② 函数指针不存在类型转换。
//③ 调用函数指针的方法如:
//函数声明为
bool lengthCompare(const String&,const String&);
cmpFcn pf=lengthcompare;
lengthCompare(“hi”,”bye”);//函数名直接调用
pf(“hi”,”bye”);//函数指针调用
(*pf) (“hi”,”bye”);//函数解引用调用
//④函数指针型的形参:
void useBigger(bool(const String&,const String&));
void useBigger(bool(*)(const String&,const String&));
标准IO库
1、IO对象不可复制或赋值。由于流对象不能复制,随意不能存在vector容器中。形参或返回类型不能为流对象。必须传递或返回IO对象的指针或者引用。引用必须是非const类型的。
类
1、const成员不能改变其所操作的对象的数据成员。const必须同时出现在声明和定义中,若只在定义或者声明中出现一处,会出现编译错误。
2、不能从const成员函数返回指向类对象的普通引用,const成员只能返回*this作为一个const引用。
3、显式指定inline成员时,可以在类内声明时写inline,也可在类外写inline,但是只能二者选一。
4、因为类可以向前声明,即只是声明,如:class A;却不定义类的成员,所以该类不能创建对象。但是可以定义该类的指针或者引用。这样便可以定义一个class A{ public:A *next;};类似C语言中链表所表示的结构一样。
5、使用类的方法有两种:一种为A temp;另一种为class A temp;。这是为了和C语言的结构体兼容。
6、const对象只能使用const成员。非const对象可以使用任意成员。
7、Mutable表示可变数据成员,甚至当它是const对象也是如此。将数据成员前加上mutable关键字,const成员函数可以改变该成员变量的值了。
8、成员函数形参表和函数体处于类作用域中,这两个可以直接使用类内定义的类型或者变量。函数的返回值类型不一定在类作用域中,与形参表相比,返回值类型出现在成员函数名字前面。如果函数定义在类定义体外,则用于返回值类型的名字在类作用域之外。如果返回值类型使用类定义的类型,则必须使用完全限定名。而形参表和成员函数体都出现在成员名之后,这些都是泪的作用域中定义,所以不用限定而使用其他成员。如:
class Screen{
public:
Typedef std::string::size_type index;
Index get_cursor() const;
private:
Int cursor;
};
Inline Screen::index Screen::get_cursor()const{
return cursor;
}
9、一旦一个名字被用作类型名,该名字不能被重复定义。构造函数不能声明为const,因为这完全没有意义,构造函数的性质是要给数据成员进行赋值的。
10、构造函数可以用初始化列表或函数体内赋值进行初始化。但赋值并不是显式的初始化,而是构造函数执行时先对数据成员进行默认初始化,然后再赋值覆盖。从概念上讲,可以认为构造函数分为两个阶段执行:初始化阶段;普通计算阶段。计算阶段由构造函数函数体中的语句组成。不管数据成员是否在构造函数初始化列表中显式初始化,类类型的数据成员总是在初始化阶段进行初始化。初始化发生在计算阶段之前。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11