精华内容
下载资源
问答
  • NumPy_with_Python NumPy不是另一种编程语言,而是Python扩展模块。 它对同类数据阵列提供快速有效的操作。 NumPy将python扩展为用于处理数字数据的高级语言
  • } 产生这种疑惑的原因是自己私有成员变量的理解有误,封装是编译期的概念,是针对类型而非对象的,在类的成员函数中可以访问同类型实例对象的私有成员变量. 具体的解析如下:从变量value的符号是怎么解析的分析...

    私有成员变量的概念,在脑海中的现象是,以private关键字声明,是类的实现部分,不对外公开,不能在对象外部访问对象的私有成员变量.

    然而,在实现拷贝构造函数和赋值符函数时,在函数里利用对象直接访问了私有成员变量,因而,产生了困惑.下面以具体实例进行说明:

    疑惑:为什么第26行和第32行代码可以编译通过,而第39行和第40行代码会产生编译错误?

    class CTest {
    public:
    CTest(int i);
    CTest(const CTest& rhs);
    CTest& operator=(const CTest& rhs);
    void printCTest(const CTest& rhs);
    private:
    int value;
    };

    CTest::CTest(int i):value(i)
    {
    cout<<“Contructor of CTest”<<endl;
    }

    CTest::CTest(const CTest& rhs):value(rhs.value)
    {
    cout<<“Copy contructor of CTest”<<endl;
    }

    CTest& CTest::operator=(const CTest& rhs)
    {
    cout<<“Assign function of CTest”<<endl;
    if(this == &rhs)
    return *this;
    value = rhs.value; //通过对象访问私有成员变量
    return *this;
    }

    void CTest::printCTest(const CTest& rhs)
    {
    cout<<rhs.value<<endl; //通过对象访问私有成员变量
    }

    int main()
    {
    CTest t = 1;
    CTest tt = 2;
    // cout<<t.value<<endl; //通过对象访问私有成员变量,编译错误
    // cout<<tt.value<<endl; //通过对象访问私有成员变量,编译错误
    t.printCTest(tt);
    }
      产生这种疑惑的原因是自己对私有成员变量的理解有误,封装是编译期的概念,是针对类型而非对象的,在类的成员函数中可以访问同类型实例对象的私有成员变量.

    具体的解析如下:从变量value的符号是怎么解析的分析.

    1.确定符号的查找域

    如第26行代码,当编译器发现value变量时,它会在value变量所属的对象rhs的类域中寻找该符号.

    2.确定当前域中哪些符号可以访问

    由第1步可知,当前查找的域是类域,而printCTest函数在CTest类体中,所以printCTest可以访问CTest类中的所有变量(包括私有成员变量),因而value符号在CTest类域中被找到.

    如第39行代码,main函数不在CTest类体中,所以main函数不可以访问CTest类域中的私有成员变量.

    3.符号已查找到,编译通过

    类成员变量的访问权限是编译器强加的,编译器可以找到value,通过编译,自然就可以访问到value变量的值.

    直觉上,我们会以为第26行代码中value符号的查找域应该是对象rhs对应的作用域,然而C++编译器的实现却是在对象rhs的类域查找value符号.

    启发:有些直觉是靠不住的,需要深入分析其背后的实现原理,才可以理解透彻.

    总结:C++的访问修饰符的作用是以类为单位,而不是以对象为单位。
      通俗的讲,同类的对象间可以“互相访问”对方的数据成员,只不过访问途径不是直接访问.
      步骤是:通过一个对象调用其public成员函数,此成员函数可以访问到自己的或者同类其他对象的public/private/protected数据成员和成员函数(类的所有对象共用),而且还需要指明是哪个对象的数据成员(调用函数的对象自己的成员不用指明,因为有this指针;其他对象的数据成员可以通过引用或指针间接指明)

    文章转载于:https://www.cnblogs.com/yanqi0124/p/3828507.html

    展开全文
  • } 产生这种疑惑的原因是自己私有成员变量的理解有误,封装是编译期的概念,是针对类型而非对象的,在类的成员函数中可以访问同类型实例对象的私有成员变量. 具体的解析如下:从变量value的符号是怎么解析的分析...

    私有成员变量的概念,在脑海中的现象是,以private关键字声明,是类的实现部分,不对外公开,不能在对象外部访问对象的私有成员变量.

    然而,在实现拷贝构造函数和赋值符函数时,在函数里利用对象直接访问了私有成员变量,因而,产生了困惑.下面以具体实例进行说明:

    疑惑:为什么第26行和第32行代码可以编译通过,而第39行和第40行代码会产生编译错误?

    classCTest {public:

    CTest(inti);

    CTest(const CTest&rhs);

    CTest& operator=(const CTest&rhs);void printCTest(const CTest&rhs);private:intvalue;

    };

    CTest::CTest(inti):value(i)

    {

    cout<

    }

    CTest::CTest(const CTest&rhs):value(rhs.value)

    {

    cout<

    }

    CTest& CTest::operator=(const CTest&rhs)

    {

    cout<

    value= rhs.value; //通过对象访问私有成员变量

    return *this;

    }void CTest::printCTest(const CTest&rhs)

    {

    cout<

    }intmain()

    {

    CTest t= 1;

    CTest tt= 2;//cout<

    t.printCTest(tt);

    }

    产生这种疑惑的原因是自己对私有成员变量的理解有误,封装是编译期的概念,是针对类型而非对象的,在类的成员函数中可以访问同类型实例对象的私有成员变量.

    具体的解析如下:从变量value的符号是怎么解析的分析.

    1.确定符号的查找域

    如第26行代码,当编译器发现value变量时,它会在value变量所属的对象rhs的类域中寻找该符号.

    2.确定当前域中哪些符号可以访问

    由第1步可知,当前查找的域是类域,而printCTest函数在CTest类体中,所以printCTest可以访问CTest类中的所有变量(包括私有成员变量),因而value符号在CTest类域中被找到.

    如第39行代码,main函数不在CTest类体中,所以main函数不可以访问CTest类域中的私有成员变量.

    3.符号已查找到,编译通过

    类成员变量的访问权限是编译器强加的,编译器可以找到value,通过编译,自然就可以访问到value变量的值.

    直觉上,我们会以为第26行代码中value符号的查找域应该是对象rhs对应的作用域,然而C++编译器的实现却是在对象rhs的类域查找value符号.

    启发:有些直觉是靠不住的,需要深入分析其背后的实现原理,才可以理解透彻.

    总结:C++的访问修饰符的作用是以类为单位,而不是以对象为单位。

    通俗的讲,同类的对象间可以“互相访问”对方的数据成员,只不过访问途径不是直接访问.

    步骤是:通过一个对象调用其public成员函数,此成员函数可以访问到自己的或者同类其他对象的public/private/protected数据成员和成员函数(类的所有对象共用),而且还需要指明是哪个对象的数据成员(调用函数的对象自己的成员不用指明,因为有this指针;其他对象的数据成员可以通过引用或指针间接指明)

    展开全文
  •  产生这种疑惑的原因是自己私有成员变量的理解有误, 封装是编译期的概念,是针对类型而非对象的,在类的成员函数中可以访问同类型实例对象的私有成员变量 .  具体的解析如下: 从变量value的符号是怎么...

    转:http://www.cnblogs.com/yanqi0124/p/3828507.html

    私有成员变量的概念,在脑海中的现象是,以private关键字声明,是类的实现部分,不对外公开,不能在对象外部访问对象的私有成员变量.

      然而,在实现拷贝构造函数和赋值符函数时,在函数里利用对象直接访问了私有成员变量,因而,产生了困惑.下面以具体实例进行说明:

      疑惑:为什么第26行和第32行代码可以编译通过,而第39行和第40行代码会产生编译错误?

    复制代码
    class CTest {
    public:
        CTest(int i); 
        CTest(const CTest& rhs);
        CTest& operator=(const CTest& rhs);
        void printCTest(const CTest& rhs);
    private:
        int value;
    };
    
    CTest::CTest(int i):value(i)
    {
        cout<<"Contructor of CTest"<<endl;
    }
    
    CTest::CTest(const CTest& rhs):value(rhs.value)
    {
        cout<<"Copy contructor of CTest"<<endl;
    }
    
    CTest& CTest::operator=(const CTest& rhs)
    {
        cout<<"Assign function of CTest"<<endl;
        if(this == &rhs)
            return *this;
        value = rhs.value;                //通过对象访问私有成员变量
        return *this;
    }
    
    void CTest::printCTest(const CTest& rhs)
    {
        cout<<rhs.value<<endl;        //通过对象访问私有成员变量
    }
    
    int main()
    {
        CTest t = 1;
        CTest tt = 2;
        //  cout<<t.value<<endl;        //通过对象访问私有成员变量,编译错误
        //  cout<<tt.value<<endl;        //通过对象访问私有成员变量,编译错误
        t.printCTest(tt);
    }
    复制代码

      产生这种疑惑的原因是自己对私有成员变量的理解有误,封装是编译期的概念,是针对类型而非对象的,在类的成员函数中可以访问同类型实例对象的私有成员变量

      具体的解析如下:从变量value的符号是怎么解析的分析

    1.确定符号的查找域

      如第26行代码,当编译器发现value变量时,它会在value变量所属的对象rhs的类域中寻找该符号.

    2.确定当前域中哪些符号可以访问

      由第1步可知,当前查找的域是类域,而printCTest函数在CTest类体中,所以printCTest可以访问CTest类中的所有变量(包括私有成员变量),因而value符号在CTest类域中被找到.

      如第39行代码,main函数不在CTest类体中,所以main函数不可以访问CTest类域中的私有成员变量.

    3.符号已查找到,编译通过

      类成员变量的访问权限是编译器强加的,编译器可以找到value,通过编译,自然就可以访问到value变量的值.

    直觉上,我们会以为第26行代码中value符号的查找域应该是对象rhs对应的作用域,然而C++编译器的实现却是在对象rhs的类域查找value符号.

      启发:有些直觉是靠不住的,需要深入分析其背后的实现原理,才可以理解透彻.

     

      总结:C++的访问修饰符的作用是以类为单位,而不是以对象为单位。
      通俗的讲,同类的对象间可以“互相访问”对方的数据成员,只不过访问途径不是直接访问.

      步骤是:通过一个对象调用其public成员函数,此成员函数可以访问到自己的或者同类其他对象的public/private/protected数据成员和成员函数(类的所有对象共用),而且还需要指明是哪个对象的数据成员(调用函数的对象自己的成员不用指明,因为有this指针;其他对象的数据成员可以通过引用或指针间接指明)


    展开全文
  • 产生这种疑惑的原因是自己私有成员变量的理解有误, 封装是编译期的概念,是针对类型而非对象的,在类的成员函数中可以访问同类型实例对象的私有成员变量 .  具体的解析如下: 从变量value的符号是怎么解析的...

    转自:http://www.cnblogs.com/yanqi0124/p/3828507.html

    私有成员变量的概念,在脑海中的现象是,以private关键字声明,是类的实现部分,不对外公开,不能在对象外部访问对象的私有成员变量.

      然而,在实现拷贝构造函数和赋值符函数时,在函数里利用对象直接访问了私有成员变量,因而,产生了困惑.下面以具体实例进行说明:

    疑惑:为什么第26行和第32行代码可以编译通过,而第39行和第40行代码会产生编译错误?

    1. class CTest {  
    2. public:  
    3.     CTest(int i);   
    4.     CTest(const CTest& rhs);  
    5.     CTest& operator=(const CTest& rhs);  
    6.     void printCTest(const CTest& rhs);  
    7. private:  
    8.     int value;  
    9. };  
    10.   
    11. CTest::CTest(int i):value(i)  
    12. {  
    13.     cout<<"Contructor of CTest"<<endl;  
    14. }  
    15.   
    16. CTest::CTest(const CTest& rhs):value(rhs.value)  
    17. {  
    18.     cout<<"Copy contructor of CTest"<<endl;  
    19. }  
    20.   
    21. CTest& CTest::operator=(const CTest& rhs)  
    22. {  
    23.     cout<<"Assign function of CTest"<<endl;  
    24.     if(this == &rhs)  
    25.         return *this;  
    26.     value = rhs.value;                //通过对象访问私有成员变量  
    27.     return *this;  
    28. }  
    29.   
    30. void CTest::printCTest(const CTest& rhs)  
    31. {  
    32.     cout<<rhs.value<<endl;        //通过对象访问私有成员变量  
    33. }  
    34.   
    35. int main()  
    36. {  
    37.     CTest t = 1;  
    38.     CTest tt = 2;  
    39.     //  cout<<t.value<<endl;        //通过对象访问私有成员变量,编译错误  
    40.     //  cout<<tt.value<<endl;        //通过对象访问私有成员变量,编译错误  
    41.     t.printCTest(tt);  
    42. }  

    产生这种疑惑的原因是自己对私有成员变量的理解有误,封装是编译期的概念,是针对类型而非对象的,在类的成员函数中可以访问同类型实例对象的私有成员变量

      具体的解析如下:从变量value的符号是怎么解析的分析

    1.确定符号的查找域

      如第26行代码,当编译器发现value变量时,它会在value变量所属的对象rhs的类域中寻找该符号.

    2.确定当前域中哪些符号可以访问

      由第1步可知,当前查找的域是类域,而printCTest函数在CTest类体中,所以printCTest可以访问CTest类中的所有变量(包括私有成员变量),因而value符号在CTest类域中被找到.

      如第39行代码,main函数不在CTest类体中,所以main函数不可以访问CTest类域中的私有成员变量.

    3.符号已查找到,编译通过

      类成员变量的访问权限是编译器强加的,编译器可以找到value,通过编译,自然就可以访问到value变量的值.

    直觉上,我们会以为第26行代码中value符号的查找域应该是对象rhs对应的作用域,然而C++编译器的实现却是在对象rhs的类域查找value符号.

      启发:有些直觉是靠不住的,需要深入分析其背后的实现原理,才可以理解透彻.

     

      总结:C++的访问修饰符的作用是以类为单位,而不是以对象为单位。
      通俗的讲,同类的对象间可以“互相访问”对方的数据成员,只不过访问途径不是直接访问.
      步骤是:通过一个对象调用其public成员函数,此成员函数可以访问到自己的或者同类其他对象的public/private/protected数据成员和成员函数(类的所有对象共用),而且还需要指明是哪个对象的数据成员(调用函数的对象自己的成员不用指明,因为有this指针;其他对象的数据成员可以通过引用或指针间接指明)

    展开全文
  •  产生这种疑惑的原因是自己私有成员变量的理解有误, 封装是编译期的概念,是针对类型而非对象的,在类的成员函数中可以访问同类型实例对象的私有成员变量 .  具体的解析如下: 从变量value的符号是怎么解析...
  •  亚马逊公司的计算机跟踪购书品味相似的人群以及他们喜欢和不喜欢的书籍,因此当一位客户在显示器上查看某个书名时,这个网址就把可能这位读者有吸引力的书名列举出来。  你去该书店的次数越多,系统你的...
  • 4 class A 5 { 6 public: 7 A(int i) : a(i){} 8 9 protected: 10 int a;...为什么成员函数fb能够访问同类(B)对象的保护成员却不能访问其基类(A)的保护成员,况且这个成员本来就继承自A
  • 最后统计的结果要求如下: scode sname 201401 201402 201403 201404 ........... 500101 直接材料 100.00 10000.00 500102 直接人工 7436.00 20000.00 ...500103 制造费用 1000.00 30000.00 ...
  • 问: 举例子如下。 修改前:字符串 hello 和 hollo 我想用正则表达式:h?llo匹配,并将这两个字符串修改为hello2和hollo2 请问我该怎么做。 请各位用试验后再告诉我正确答案。...我用的是ultraedit, ultraedit或者...
  • 同类

    2007-01-06 11:08:00
    李偲菘雨后的城市寂寞又狼狈路边的座位它空着在等谁我拉住时间它却不理会有没有别人跟我一样很想被安慰风停了又吹我忽然想起谁天亮了又黑我过了好几岁心暖了又灰世界有时候孤单的很需要另一个同类爱收了又给我们都不...
  • 不管是卖家是做哪个电商平台,店铺产品的布局问题都是必不可少的操作,下面小编就来为大家讲解一下自己对同类产品布局的看法。 大部分天猫卖家开店时,虽然店铺产品的款式及属性不一样,但是它们同样属于同一类目。...
  • 经人提醒这一年写的文章不多,一方面是因为同类的技术如果没有自己的体会不写,太我简单的也不写。去年多在学习各种各样的新接触的技术,还没有足够的经验与体会总结。最近各种已有技术的集成方面,总结点个人经验...
  • Python合并同类项的字符串,一

    千次阅读 2019-04-02 11:07:02
    需求: 1.通过key[公司名称]合并两张表,将订单数据写入公司信息表 2.合并同个[公司名称]值下对应的不同字段多个值,为每个字段的值生成List,填入单个单元格中,效果如下图 原数据视图 目标数据视图 ...
  • 相似角化(3)前言(1)今天我们继续来讨论矩阵的相似角化问题, 算是之前学习内容的复习和巩固, 并同时给出实际的例子。(2)①特征值、特征向量这里, 无论是具体的数字型还是抽象型问题, 定义法都是首选的。本题是...
  • **需求:**1.合并同个[公司名称]值下对应的不同字段多个值,填入单个单元格中,效果如下图原数据视图 目标数据视图 2.通过key[公司名称]合并两张表,将订单数据写入公司信息表思路第一步:去重第二步:根据公司名...
  • 先说结论:当有多个监听器时,只采用最新的那个 直接看源码吧 public void setOnClickListener(OnClickListener l) { if(!isClickable()) { setClickable(true);... getListenerInfo().mOnClickListener = l;...
  • 类默认有个拷贝构造函数 #include <iostream> #include <string>...o1){//默认的拷贝构造函数也就是这样单纯的每个属性进行拷贝 只不过现在显性写出来了 a = o1.a; } int getA(){
  • css移入移出效果,同类对象的一个事件但分别执行,显示与隐藏
  • 偷石头的企鹅-同类才能发现同类

    千次阅读 2012-05-29 14:36:36
    有位朋友,看起来清心寡欲,着装也很素静,但她称自己年轻时是狐狸精的类型,后来是累了,于是转变了风格。我是怎么也无法把她和狐狸精联系起来。...而我那个合作伙伴印象还不错。而搞笑的是,另一个朋友评价这个同事
  • javascript获取所有同类checkbox选项的简单实例。需要的朋友可以过来参考下,希望大家有所帮助
  • [AHOI2009]同类分布

    2019-09-22 16:32:12
    [AHOI2009]同类分布 BZOJ luogu 朴素的数位dp,我们想到在状态中记录各位数字之和以及这个数,然后第几位 仔细一想 难道你打算开一个\(10^{20}\)大小的数组? 考虑枚举各位数字之和,这样我们运算过程中可以该数取模,...
  • dynamic_cast同类指针

    2010-10-16 23:41:00
    对于同类指针的cast应该是直接通过,不对指针所指的object进行run time check。int main(){ A *p1 = (A*)0x1; A *p2 = dynamic_cast(p1); return 0;}但是VC6中竟p1所指的地址进行了检查,这是VC6ISO C++ ...
  • 本文实例为大家分享了python遍历文件目录、批量处理同类文件的具体代码,供大家参考,具体内容如下 目录操作 1、获取当前目录 import os curr_path=os.path.dirname(__file__) #返回当前文件所在的目录,即当前运行...
  • 同类文件的批量命名

    2019-09-13 23:54:29
    快速重命名多个文件:当我们在电脑中命名多个文件的时候,相信许多的朋友都是一个一个进行修改,...其实我们是可以使用一些快捷方式的,先选中要进行重名的文件,按F2键就可以多个文件进行重命名了。 标题 ...
  • 但是同一列的数据校验提示语可能就只是行数不同,其他都相同,由于我们的数据校验提示都是放到消息盒子里的,所以为了阅读方便,需要同类型的校验信息合并同类项。 处理逻辑: 1.定义验证信息类 需要重写equals...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,867
精华内容 3,146
关键字:

对同类