C语言总结(5)

来源:互联网 发布:html源码怎么用 编辑:程序博客网 时间:2024/04/30 10:11


strcpy,sprintf,memcpy的区别

1、操作对象不同,strcpy是对字符串的操作,sprintf可以是任意数据类型,其目的对象是字符串。memcpy是任意数可操作的据类型内存地址。

2、执行效率不同:memcpy最高,其次strcpy,sprintf效率最低

3、实现功能不同:strcpy是将两字符串进行拷贝,sprintf是将其他数据类型转换成字符串,memcpy是内存块间的拷贝。

C++空类中有:默认的构造函数、默认析构函数、默认拷贝构造函数、默认赋值运算符、默认取地址运算符、用const修饰的取地址运算符。只有当实际使用这些函数的时候,编译器才会去定义它们。

拷贝构造函数与赋值运算符的认识:(1)拷贝构造函数是要生成一个新对象,而赋值运算符不能。(2)由于拷贝构造函数是直接构造一个新的对象,所以初始化这个对象之前不用检查源对象是否和创建对象相同。而赋值运算符则需要这个操作,另外赋值运算符中如果原来的对象中有内存分配要先内存释放掉。注意:当有类中有指针类型的成员变量时,一定要重写拷贝函数和赋值运算符,不要使用默认的。

类成员函数的重写、重载和隐藏的区别

(1)重写和重载主要有以下几点不同

   范围的区别:被重写的和重写的函数在两个类中,而重载和被重载的函数在一个类中。

   参数的区别:被重写函数和重写函数的参数列表一定相同,而被重载函数和重载函数的参数列表一定不同。

   virtual的区别:重写的基类中被重写的函数必须要有virtual修饰,而重载函数和被重载函数可以被virtual修饰,也可以没有。

(2)隐藏和重写、重载有以下几点不同。

    与重载的范围不同:与重写一样,隐藏函数和被隐藏函数在不同的一个类中。

    参数的区别:隐藏函数和被隐藏函数的参数列表可以相同,也可以不同。但是函数名肯定要相同。当参数不相同时,无论基类中的函数是否被virtual修饰,基类的函数都被隐藏,而不是重写,也不会是重载。


0 0
原创粉丝点击