-
静态数据成员和静态成员函数的注意事项查看全部
-
静态数据成员必须单独初始化 静态成员函数不能调用非静态成员函数和非静态数据成员 非静态成员函数可以调用静态成员函数和静态数据成员 静态数据成员不依赖于对象而存在,仅此一份。查看全部
-
友元注意事项查看全部
-
友元全局函数,使用引用和指针较好查看全部
-
静态成员函数不能是常成员函数,因为const修饰的是隐藏的this指针,而static 静态成员函数是不依赖于对象而存在的。因此用const 修饰static函数必然会出现问题。查看全部
-
静态数据成员必须单独初始化 静态成员函数不能调用非静态成员函数和非静态数据成员 非静态成员函数可以调用静态成员函数和静态数据成员 静态数据成员不依赖于对象而存在,仅此一份。查看全部
-
但是看了这一节,发现后置++的返回值是对象而非引用,因为,如果返回是引用,那么返回的是一块临时变量(old)的引用,当后置++的函数调用结束后,该临时变量会被自动释放掉,那么返回的引用的值就会是一个-37983219之类的为初始化的值了,发生bug。 所以总结就是,能用引用的尽量用引用,是在不行的就返回对象。查看全部
-
而返回对象会有连续赋值失败的风险,参见http://www.cnblogs.com/codingmengmeng/p/5871254.html。所以还是老老实实返回引用类型查看全部
-
如果要求运算符能实现连续赋值,那重载函数的返回值必须不为空void,返回类型可以是对象或引用,但是一般都规范使用引用,这样可以减小内存开销提高效率。若返回值是void(即空),那么就无法连续赋值,会报错。返回值不为空的函数被调用时,不一定要用别的对象来接收返回值,如果没有接收的对象,那么该临时返回值尤其是返回的是对象而非引用时,在其作用域结束时就会被释放掉。具体见http://www.cnblogs.com/codingmengmeng/p/5871254.html查看全部
-
A:事实上,我们的重载运算符返回void、返回对象本身、返回对象引用都是可以的,并不是说一定要返回一个引用,只不过在不同的情况下需要不同的返回值。 那么什么情况下要返回对象的引用呢? 原因有两个:1.允许进行连续赋值2.防止返回对象(返回对象也可以进行连续赋值)的时候调用拷贝构造函数和析构函数导致不必要的开销,降低赋值运算符等的效率。 对于第二点原因:如果用”值传递“的方式,虽然功能任然正确,但由于return语句要把*this拷贝到保存返回值的外部存储单元之中,增加了不必要的开销,会降低赋值函数的效率。 B:用友元函数重载时,参数之所以用引用类型,也是因为原因2,为了降低开销,提高效率。查看全部
-
F7是编译,F5是调试查看全部
-
但是静态数据成员可以用const修饰,成为静态常数据成员,一旦被赋值就不能再修改。 另外,常成员函数实质上是用const修饰了this指针,所以内部不能修改(this指向的对象的)普通数据成员,更无法修改不能改值得常数据成员,无法调用普通成员函数,但是对于类全局的静态非常数据成员是可以修改的,也可以调用别的常成员函数。查看全部
-
静态成员函数不可以调用非静态数据成员和非静态成员函数,因为非静态数据成员只有在实例化对象时才生成,非静态成员函数实际有this指针作为参数。查看全部
-
静态成员函数不可用const修饰,因为const修饰的本质是用const修饰this指针,然而静态成员函数是全局的,根本没有this指针查看全部
-
静态数据成员必须单独初始化;静态不能调用非静态,非静态可以调用静态;静态数据成员只有一份,值可以改变,但个数不会变查看全部
举报
0/150
提交
取消