精华内容
下载资源
问答
  • #include<iostream> using namespace std; class A { public:  friend void test(A a);...构造函数无返回值,但调用它会创建一个对象, 转载于:https://www.cnblogs.com/lzh-Linux/p/3482808.html

    #include<iostream>
    using namespace std;
    class A
    {
    public:
        friend void test(A a);
        int a1;
        A()
        {
            cout<<"A"<<"\n";
        }

    };
        void test(A a)
        {
            a.a1=1;
            cout<<a.a1<<"\n";
        }


    int main()
    {
        test(A());
        return 0;
    }

    image

     

    构造函数无返回值,但调用它会创建一个对象,

    转载于:https://www.cnblogs.com/lzh-Linux/p/3482808.html

    展开全文
  • 友元函数的参数不能调用,请教是哪里错误了。 下面是函数定义 //返回复数的模 double Modulus(void); //返回复数的角度,均换算到(-180~180]区间 double Angle(void); //运算符重载 / friend ...
  • 友元函数重载时,参数列表为1,说明是1元,为2说明是2元。成员函数重载时,参数列表为空,是一元,参数列表是1,为2元。
    友元函数重载时,参数列表为1,说明是1元,为2说明是2元。
    成员函数重载时,参数列表为空,是一元,参数列表是1,为2元。
    展开全文
  • 一个双目运算符作为类的成员函数重载时,重载函数的参数表中有()个参数。 A.1 B.2 C.3 D.0 A 若为成员函数重载,参数一般为类对象的引用,另一个参数由this 指针所指向,故不显示。 若为友元函数重载,则有两个参数...

    一个双目运算符作为类的成员函数重载时,重载函数的参数表中有()个参数。
    A.1
    B.2
    C.3
    D.0

    A
    若为成员函数重载,参数一般为类对象的引用,另一个参数由this 指针所指向,故不显示。
    若为友元函数重载,则有两个参数!

    展开全文
  • 这里重新将类的成员函数的定义看一下:百科上的认识:类的成员函数的原型要写在类体中,原型说明了函数的参数表和返回值类型。而函数的定义一般在类外面,也可以直接在类内部定义。前者与普通函数不同的是,实现成员...

    这里重新将类的成员函数的定义看一下:

    百科上的认识:

    类的成员函数的原型要写在类体中,原型说明了函数的参数表和返回值类型。而函数的定义一般在类外面,也可以直接在类内部定义。前者与普通函数不同的是,实现成员函数时要指明类的名称,具体形式为:

    返回值类型 类名 :函数成员名(参数表){函数体};

    而后者一般为一些短小的函数(5行以内),也就是内联函数。

    这里在百科上对友元函数的解释:

    友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有者的同意)。

    1.为什么要使用友元函数

    优点:能够提高效率,表达简单、清晰。

    也有缺点:破坏了程序的封装性。有时候不到万不得已的时候才使用。

    代码解释:

    #include

    #include

    using namespace std;

    class ca {

    string id;

    void setId(string s) {

    id = s;

    }

    protected:

    string name;

    void setName(string s) {

    name = s;

    }

    public:

    void print() {

    cout << id << " " << name << " " << endl;

    }

    friend void fun(ca& a); //申明全局函数作友元,允许它访问私有保护成员

    };

    class derive : public ca { }; //ca类的派生类

    void fun(ca& a) { //作友元的函数要定义在那个类的后面

    a.id = "987"; //这是ca类的私有成员

    a.setName("xyz"); //这是ca类的保护成员

    }

    int main ( )

    {

    ca a;

    //a.fun(...); //友元函数不是当前类的成员函数,所以这句编译出错

    fun(a);

    a.print();

    derive d;

    fun(d); //作参数时,类型转换为ca类

    d.print();

    return 0;

    }

    运行结果:

    987  xyz

    987  xyz

    在就是友元函数的位置:可以在类外或者类内

    声明方式:friend+普通函数声明

    实现方式:像普通函数那样直接调用

    还有一点的是:其实一些操作符的重载实现也是要在类外实现的,那么通常这样的话,声明为类的友元是必须滴。(这就像我学的那个坐标类,直接用操作符重载,声明友元函数)

    最后一个知识点:

    友元函数和类的成员函数的区别:

    1.成员函数有this指针,而友元函数没有this指针。

    2.友元函数是不能被继承的,就像父亲的朋友未必是儿子的朋友。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

    展开全文
  • C++友元函数

    2016-09-11 11:06:00
    2.1友元函数的参数: 因为友元函数没有this指针,则参数要有三种情况: 2.1.1要访问非static成员时,需要对象做参数; 2.1.2要访问static成员或全局变量时,则不需要对象做参数; 2.1.3如果做参数的对象是全局...
  • C++学习中看到视频课上的友元函数的类外实现不仅要在类内部声明友元函数是一个模板函数,还要在类外再去声明,并且由于友元函数的参数是一个模板类,还要类外声明模板类。 代码如下: template<class T1, class ...
  • 友元函数

    2018-10-28 01:25:02
    1)必须在类的说明中说明友元函数,说明时以关键字friend开头,后跟友元函数的函数原型,友元函数的说明可以出现在类的任何地方,包括在private和public部分; 2)注意友元函数不是类的成员函数,所以友元函数的实....
  • 一、友元介绍我们知道,类成员...friend 类型 友元函数名(参数表);友元作用在于提高程序运行效率 友元函数注意事项:1、友元函数不是类成员函数,在函数体中访问对象成员,必须用对象名加运算符“.”加对
  • template<class T1 ,class T2>... //友元函数类内实现 friend void printPerson( Person<T1 ,T2> & p ) { cout << "姓名:" << p.m_Name << " 年龄: " << p.m_Age &l...
  • C++友元函数与友元类

    2018-03-19 20:56:27
    (2)友元函数不是类的成员函数,它不带有this指针,因此必须将对象名或对象的引用作为友元函数的参数,并在函数体中使用运算符“.”来访问对象的成员。(3)可以直接访问该类中的所有成员(公有,保护,私有)。(4...
  • 友元函数的说明

    2015-06-25 19:28:03
    1)必须在类的说明中说明友元函数,说明时以关键字friend开头,后跟友元函数的函数原型,友元函数的说明可以出现在类的任何地方,包括在private和public部分; 2)注意友元函数不是类的成员函数,所以友元函数的
  • 2.友元函数没有隐藏的this指针,故参数列表中要多一个类的参数,相当于this指针,但是不一定为第一个参数,这使得友元函数的操作更加灵活,能够完成一些成员函数无法完成的操作,使用友元函数将会使类的操作更加灵活...
  • 友元函数的参数之一是类元素,类指针或者是类引用,意思是修改某个对象中的类私有成员(对象一般是访问不了类私有成员的). 若F类是A类的友元类,那么F类的所有成员函数都是A类的友元函数,在F类里声明一个A类的对象a...
  • 友元函数的面试问题

    2019-12-26 17:27:44
     1、友元函数的创建: 加上friend关键字,注意参数的数量。注意,该原型的声明以为着两点:  (1)虽然friend operator * (...)函数中声明的,但它不是成员函数,因此不能用使用成员操作符来调用;  (2)...
  • 【友元函数】: 友元函数是指某些虽然不是类成员函数却能够访问类的所有成员的函数。类授予它的友元特别的访问权,这样该友元函数就能访问到类中的所有成员。... 友元函数的使用: 因为友元函数没有this指针,...
  • C++ 友元函数与友元类

    2020-04-10 13:42:29
    C++ 友元函数与友元类一、友元函数1、声明2、友元函数的作用3、在类中声明友元函数的方式4、友元函数的注意事项二、友元类1、声明2、注意事项 一、友元函数 1、声明 friend 返回类型 函数名(参数); 2、友元函数的...
  • 友元函数、友元类

    2020-07-06 11:19:14
    友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们是没有区别的,都说明是该类的一个友元函数。一个函数可以是多个类的友元函数,只需要在各个类中分别声明。友元函数的调用与一般函数的调用方式和原理...
  • 换言之,某个类的友元函数的声明只能在这个类的内部,可以在private部分也可以在public部分,一般做法是将友元声明成组地放在类定义的开始或结尾处。 友元函数的形式: friend <返回类型> <函数名> (&...
  • 重载 重载运算符目的:使对象操作...一类:成员函数重载运算符 显式调用一个参数,隐式调用一个参数 Time Time::operator+(const Time& b); 二类:非成员函数重载运算符 显式调用两个个参数 Time operator+(...
  • C++ 友元类和友元函数

    2020-10-22 09:35:30
    友元函数的格式: friend 函数返回类型 函数名(参数列表)。 c. 友元函数声明的位置和类访问修饰符无关。 //对象的成员必须初始化 class Test { //声明,该函数是Test的友元函数,可以在类的外部访问类的私有成员 ...
  • 友元函数不是这个类中成员函数,只是一个普通小可爱:在类体外声明、在类体外实现,跟普通函数完全一样,不过需要在类体内“登记”一下,表示这个函数有权限访问类体内所有成员。登记格式是: friend 函数...
  • 友元函数和友元类需要:类具有封装和信息隐藏特性。只有类成员函数才能访问类私有成员,程序中其他函数是无法访问私有成员。非成员函数可以访问类中公有成员,但是如果将数据成员都定义为公有,这又...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,217
精华内容 486
关键字:

友元函数的参数