码迷,mamicode.com
首页 >  
搜索关键字:非成员函数    ( 102个结果
Effective C++ 条款23
宁以non-member、non-friend替换member函数本节作者阐述了为什么在实现一些功能的时候,应该偏向于选择非成员函数并且是非友元函数。这样做总结一句话,就是最大限度的实现类的封装性。封装意味着不可见。愈多东西被封装,欲少人可以看到它,我们就有愈大的弹性去改变它。愈少代码可以看到数据(访问数据),愈多数据可被封装,我们就更有自由来改变对象数据。愈多函数可以访问它,数据的封装性就愈低。我...
分类:编程语言   时间:2015-06-27 11:44:21    阅读次数:160
C++运算符重载为非成员函数
1 #include 2 using namespace std; 3 class Complex{ 4 public: 5 Complex(double r=0.0,double i=0.0):real(r),imag(i){} 6 friend Complex operator...
分类:编程语言   时间:2015-06-18 12:57:12    阅读次数:226
C++重载运算符
运算符重载的两种方式对于很多运算符来说,可以选择使用成员函数或非成员函数来实现运算符重载。一般来说非成员函数应该是友元函数,这样才能直接访问类的私有数据。例如,Time类的加法运算符在Time类声明中的原型为:Time operator+(const Time &t) const; //member...
分类:编程语言   时间:2015-06-17 13:11:59    阅读次数:137
Effective C++ 条款46
本节条款:需要类型转换时请为模板定义非成员函数这节知识是在条款24的基础上,讲述的有关非成员函数在模板类中(non-member function template)的作用。 我们先看一下条款24讲述的知识核心。条款24讲述了我们如何能实现类的对象在特定条件下的隐式转换问题。 我们先看以下代码:**例一:**#include #include using...
分类:编程语言   时间:2015-06-08 11:42:20    阅读次数:150
友元(友元函数、友元类和友元成员函数) C++
有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的。例如被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员。 友元(frend)机制允许一个类将对其非公有成员的访问权授予指定的函数或者类,友元的声明以frend开始,它只能出现在类定义的内部,友元声明可以出现在类中的任何地方:友元不是授予友元关系的那个类的成员,所有它们不受其声明出现部分的访...
分类:编程语言   时间:2015-06-08 09:52:36    阅读次数:135
条款04:确定对象被使用前已先被初始化
**用成员初值列初始化成员对象: 我们习惯上的错误** 用default构造函数的方法初始化 non-local-static非成员函数内部静态变量初始化先后有要求的,则其初始化需要一个“仿真函数”: 注意:...
分类:其他好文   时间:2015-05-08 18:14:39    阅读次数:131
宁以non-member且non-friend替换member函数
这样做的第一个理由是增加封装性,咳咳,这听起来有点矛盾,因为non-member且non-friend成员函数要想处理某个类中的数据的话,就得看到(即能访问)该类中的数据,那么数据就得是public的。这明显破坏了封装。嗯,解释一下,不是每个函数都要明确看到数据才能处理,它可以调用类中的一序列public函数来完成任务,这些public函数可以明确地看到类中的数据,如果我们把调用他们的函数作为mem...
分类:其他好文   时间:2015-04-22 22:21:57    阅读次数:99
第六周 项目六-复数模板类(3)
(3)友元函数提供了一种非成员函数访问私有数据成员的途径,模板类使类中的数据成员的类型变得灵活,这两种技术可以结合起来用。要求在前面方案的基础上支持用友员函数实现的加法。用于测试的main()函数如下: int main( ) { Complex c1(3,4),c2(5,-10),c3; c3=c1.complex_add(c2); //调用成员函数支持加法运算,有一个形参 ...
分类:其他好文   时间:2015-04-19 14:42:27    阅读次数:146
Effective C++笔记_条款46 需要类型转换时请为模板定义非成员函数
看这个章节的时候又跑回去看了一下 条款 24,本章的例子就是基于下面这个例子而来的。在 item 24 中,支持混合运算的示例代码如下: 1 class Rational { 2 public: 3 Rational(int numerator = 0, int...
分类:编程语言   时间:2015-04-19 12:53:31    阅读次数:305
对象的位拷贝形式
传值方式是位拷贝形式,包括对象不调用构造函数,但会调用其析构函数 如果设计了拷贝函数,当从现有的对象创建新对象时,编译器将不使用位拷贝。编译器总是调用我们的拷贝构造函数(c++编译器自动创建的拷贝构造函数也是位拷贝的,是不安全的。所以一般自己创建。) 又一个简单的技术防止通过按值传递方式传递:声明一个私有拷贝构造函数。甚至不必去定义它,除非成员函数或友元函数需要执行按值传递方式的传递。如果用户...
分类:其他好文   时间:2015-04-17 18:18:22    阅读次数:120
102条   上一页 1 ... 6 7 8 9 10 11 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!