精华内容
下载资源
问答
  • 类的对象成员(整理)
    千次阅读
    2020-08-03 12:39:53

    新的概念:类的对象成员

    C++程序中可能会涉及到许多类和对象,这些类和对象间如何发生联系?

    C++为类和对象之间的联系提供了如下方式:

    1. 一个类对象可能是另一个类的成员(对象成员)
    2. 一个类的成员函数是另一个类的友元成员
    3. 一个类定义在另一个类的说明中,即类嵌套
    4. 一个类作为另一个类的派生类

    什么是对象成员?
    答:自定义类的数据成员是另一个类的对象(两个角色)
    例如:

    • 类B的对象是类A的一个成员,则该成员就称为类A的对象成员
    • 这意味着一个类A的“大对象”包含着一个B类的“小对象”
    • 也就是说,类B对象属于类A对象

    对象成员如何声明?

    • 类内声明一个对象成员与声明一个int型数据成员相同
    • 只需说明类中数据成员的类型和名称
    • 在类中声明对象成员时并不会创建该对象(类外声明对象表明创建了一个对象,二者有所不同)

    类的对象成员示例
    说明:Circle类中的表示圆心的数据成员m_center是Point类的对象

    //DefineClass.h
    class Point  //定义一个点类
    {
       
    更多相关内容
  • 一、使用 对象名.@成员名 访问 Groovy 对象成员、 二、完整代码示例





    一、使用 对象名.@成员名 访问 Groovy 对象成员



    针对 Groovy 中的类 ,

    class Student {
        def name
        def age
    }
    

    创建 Student 对象 , 如果使用 对象名.成员名 访问该对象中的成员 , 其本质上是调用 Student 对象的 getter 和 setter 方法 ;

    // 实例化 Student 类
    def student = new Student()
    
    // 对 对象名.成员名 赋值 , 相当于执行 setter 方法
    student.name = "Jerry"
    student.age = 16
    
    // 使用 对象名.成员名 访问成员 , 相当于执行 getter 方法
    println student.name
    println student.age
    

    如果不想调用 getter 和 setter 方法 , 可以使用 对象名.@成员名 的格式 , 访问对象的成员变量 ;

    // 使用 对象名.@成员名 访问对象成员
    student.@name = "Jim"
    student.@age = 58
    
    println student.@name
    println student.@age
    

    打印结果为 :

    Jim
    58
    




    二、完整代码示例



    完整代码示例 :

    /**
     * 创建 Groovy 类
     * 在其中定义 2 个成员
     */
    class Student {
        def name
        def age
    }
    
    // 实例化 Student 类
    def student = new Student()
    
    
    // I. 使用 getter 和 setter 方法访问成员
    
    
    // 使用 setter 方法设置成员变量
    student.setName("Tom")
    student.setAge(18)
    
    // 使用 getter 方法获取成员值
    println student.getName()
    println student.getAge()
    
    
    // II. 使用 对象名.成员名 访问对象成员
    
    
    // 对 对象名.成员名 赋值 , 相当于执行 setter 方法
    student.name = "Jerry"
    student.age = 16
    
    // 使用 对象名.成员名 访问成员 , 相当于执行 getter 方法
    println student.name
    println student.age
    
    
    // III. 使用 对象名.'成员名' 访问对象成员
    
    
    // 对 对象名.'成员名' 赋值 , 相当于执行 setter 方法
    student.'name' = "Han"
    student.'age' = 32
    
    // 使用 对象名.'成员名' 访问成员 , 相当于执行 getter 方法
    println student.'name'
    println student.'age'
    
    
    // IV. 使用 对象名['成员名'] 访问对象成员
    
    
    // 对 对象名['成员名'] 赋值 , 相当于执行 setter 方法
    student['name'] = "CSDN"
    student['age'] = 9
    
    // 使用 对象名['成员名'] 访问成员 , 相当于执行 getter 方法
    println student['name']
    println student['age']
    println student.getAt("age")
    
    
    
    // V. 使用 字符串变量 访问对象成员
    
    
    // 定义字符串变量
    def field = "name"
    // 通过字符串变量访问 对象成员
    println student."${field}"
    
    
    // VI. 使用 对象名.@成员名 访问对象成员
    
    
    // 使用 对象名.@成员名 访问对象成员
    student.@name = "Jim"
    student.@age = 58
    
    println student.@name
    println student.@age
    

    执行结果 :

    Tom
    18
    Jerry
    16
    Han
    32
    CSDN
    9
    9
    CSDN
    Jim
    58
    

    在这里插入图片描述

    展开全文
  • c++包含对象成员的类

    千次阅读 2019-04-26 10:03:44
    成员对象:当一个类的成员是另一个类的对象时,这个对象就叫成员对象。 我们知道,继承满足的关系是:is a关系,而成员对象满足的关系是has a关系,比如学生类和分数类,显然学生有分数,所以分数类可以作为学生类的...

    成员对象

    成员对象:当一个类的成员是另一个类的对象时,这个对象就叫成员对象。

    我们知道,继承满足的关系是:is a关系,而成员对象满足的关系是has a关系,比如学生类和分数类,显然学生有分数,所以分数类可以作为学生类的成员对象


    成员对象的构造与析构

    1、出现成员对象时,如果成员对象的构造函数是有参构造函数,则该类的初始化列表需要对成员对象进行初始化。class

    Member {
      private:
        int i;
      public:
        Member(int i)
        {
            this->i = i;
        } }; class Test {
      private:
        Member member;
      public:
        Test(): member(1)
        {
        } }; 
    

    2、一个含有成员对象的类实例化时要先调用成员对象的构造函数,然后再调用该类的构造函数,析构时先调用该类的析构函数,再调用成员对象的析构函数。

    3.如果你将成员对象分数设为私有,那么就不能通过student.fenshu.getfenshu()这种实例化fenshu的方式来访问getfenshu()函数(即成员对象的函数),因为成员对象分数为私有,就不能实例化来访问它,所以student.fenshu就是错的。但是既然成员对象分数为私有,我们就可以在student中建一个接口函数show_stu_fenshu来直接访问fenshu.getfenshu()。

    举例:

    void Student::show_stu_fenshu()
    {
        this->stu.show_name(); //通过this先直接访问类对象成员stu,再访问stu的成员函数show_name()
    }
    

    school.h:

    #ifndef SCHOOL_H
    #define SCHOOL_H
    #include <student.h>
    #include <string>
    #include <iostream>
    using namespace std;
    
    class School
    {
    private:
        string name;
        Student stu;
    
    
    public:
        School();
    
        School(string a);
    
        void show_stu_name();
    };
    
    #endif // SCHOOL_H
    

    school.cpp:

    #include "school.h"
    using namespace std;
    
    School::School()
    {
        this->name = "none";
        cout << "this is default constructor of school" << endl;
    }
    
    School::School(string a):stu("zouxu",666)
    {
        this->name = a;
        cout << "this is hancan constructor of school" << endl;
    }
    
    
    void School::show_stu_name()
    {
        this->stu.show_name();
    }
    

    student.h:

    #ifndef STUDENT_H
    #define STUDENT_H
    #include <string>
    #include <iostream>
    using namespace std;
    
    class Student
    {
    private:
        string name;
        int age;
    
    public:
        Student();
    
        Student(string a ,int b);
    
        void show_name() const;
    
        void show_age() const;
    
    
    };
    
    
    #endif
    

    student.cpp:

    #include "student.h"
    #include <iostream>
    
    using namespace std;
    
    Student::Student()
    {
        this->name = "none";
        this->age = 0;
        cout << "this is default constructor of student" << endl;
    }
    
    Student::Student(string a,int b)
    {
        this->name = a;
        this->age = b;
        cout << "this is hancan constructor of student" << endl;
    }
    
    void Student::show_name() const
    {
        cout << this->name << endl;
    
    }
    
    void Student::show_age() const
    {
        cout << this->age << endl;
    
    }
    

    main.cpp:

    #include <iostream>
    #include <student.h>
    #include <school.h>
    #include <string.h>
    using namespace std;
    
    int main()
    {
        School school("mianzhong");
        //school.stu.show_name();  it is wrong
        school.show_stu_name();
    
        return 0;
    }
    
    展开全文
  • python获取对象成员函数与变量

    千次阅读 2020-05-14 19:47:56
    python在编程中总是不清楚对象成员方法,通过一些内置函数可以在运行环境中得到成员函数和成员变量。当然也可以应用inspect库函数查看。 class A(object): def __init__(self, x): self.x = x obj = A() print...

    python在编程中总是不清楚对象的成员方法,通过一些内置函数可以在运行环境中得到成员函数和成员变量。当然也可以应用inspect库函数查看。

    class A(object):
    	def __init__(self, x):
    		self.x = x
    
    obj = A()
    print(obj.__dict__)
    print(vars(obj))
    print(dir(obj))
    

    运行结果:

    {'x': 2}
    {'x': 2}
    ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'get_x', 'x']
    

    从运行结果来看,成员变量__dict__和vars()都可以抽取对象的成员变量做成字典。但在实际使用中发现有时候可能会出错,返回只有类的变量类型,而没有成员变量。类似于

    {'_sa_instance_state': <sqlalchemy.orm.state.InstanceState object at 0x0000024F3B6FFE48>}
    

    调试发现,如果出现这种错误,可以调用

    print(dict(obj))
    

    来展示成员变量。但是对于不可迭代的类,dict函数不可用。

    dir函数可以抽取对象可用的所有成员函数。

    展开全文
  • 访问对象中的成员可以有3种方法:①通过对象名和对象成员引用运算符(.)访问对象中的成员; 访问对象中数据成员的一般形式为: 对象名.成员名class Data { public : int data; void fun(int a,int b,int d);/...
  • 对象成员对象成员指针 对象成员,作为一个对象来说,他成为另外一个类的数据成员 对象成员指针,对象的指针作为另外一个类的数据成员   对象成员指针也可以用初始化列表实现 对象成员指针指向其某一...
  • 在使用ts的对象成员时,必须对其赋初值,否则不能使用如batchMes.varietyId或对对象内不存在的值赋值。 const [batchMes, setbatchMes] = useState({ batchName: '', batchNum: '', batchMeasure: 0, breedF
  • 关于C++/JAVA类中static 成员和对象成员的说法正确的是? A. static 成员变量在对象构造时生成 B. static 成员函数在对象成员函数中无法调用 C. 虚成员函数不可能是static 成员函数 D. static 成员函数不能访问...
  • 获取数组长度, 对象成员个数, 字符串数. 2.学习/操作 TBD 3.问题/补充 TBD 4.参考 https://www.cnblogs.com/sunnywindycloudy/p/7382226.html //js获取数组长度,对象成员个数、字符串数 ...
  • C++类中的对象成员

    千次阅读 2018-07-27 11:04:56
    譬如定义一个类A,类B,其中类A为类B的函数成员,此时,类A为类B的对象成员 程序的结果分析如下: 第一步:A pa(0,0),调用类A的构造函数,长生第一行结果: AAAAAAAAAA 第二步:pa.printA();调用类A的成员函数...
  • c++对象成员的引用

    千次阅读 2018-05-30 13:41:46
    访问类对象中的成员可以有3种方法:通过对象名和成员运算符访问对象中的成员;通过指向对象的指针访问对象中的成员;通过对象的引用变量访问对象中的成员。1.通过对象名和成员运算符.访问对象中的成员例如在程序中...
  • 不是由static修饰的是实例变量,也就是对象成员变量, 对象.变量名 调用 public class Variable { //定义类变量 private static String name ;; //定义对象变量 private int age; public static void main...
  • 会先创建Stu,对象成员,然后再创建banji 然而我们如果在Banji的构造函数里面初始化Stu,那就来不及了! 这时候,我们应该使用初始化列表! 因为初始化列表在构造函数的函数体执行顺序之前! 能够在初始...
  • c++ 指向对象成员的指针

    千次阅读 2018-05-13 14:17:27
    对象中的成员也是占有内存的,所以,存放对象成员的起始地址的指针变量就是指向对象成员的指针变量。1.指向对象数据成员的指针int *p1; //定义指向整形数据的变量p1 = &amp;t1.hour; //把hour的地址赋给p1cout&...
  • C++对象成员与构造函数

    千次阅读 2018-03-19 20:47:35
    当一个类中出现对象成员时,该类的构造函数就要为对象成员初始化,对象成员的初始化必须在构造函数的初始化表中完成。注意:初始化对象成员时必须用对象成员名,而不是它的类型名。例如:class Date{ int year, ...
  • C++中的常对象和常对象成员

    千次阅读 多人点赞 2016-08-08 19:36:53
    对象中的数据成员为常变量且必须要有初始值,如 Time const t1(12,34,36); //定义t1为常对象 这样的话,在所有的场合中,对象t1中的所有数据成员的值都不能被修改。凡希望保证数据成员不被改变的对象,...
  • java面试题37 关于对象成员占用内存的说法哪个正确?( ) A 同一个类的对象共用同一段内存 B 同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间 C 对象的方法不占用内存 D 以上都不对 蒙蔽树...
  • 关于类中对象成员的构造函数和类自身构造函数的执行顺序的问题,我们通过一段简单的程序来验证,测试代码如下: #include <stdio.h> class A { public: A() { printf("AAAAA\n"); }; ~A(){}; ...
  • 构造时:基类构造函数→对象成员构造函数→派生类本身的构造函数 析构时:派生类本身的析构函数→对象成员析构函数→基类析构函数 写个小程序验证一下: #include <iostream> using namespace std; class ...
  • 包含对象成员的类的构造与析构顺序

    千次阅读 多人点赞 2016-03-25 04:00:12
    (2)当一个类中含有对象成员时,在启动本类的构造函数之前,先分配对象空间,按对象成员的声明顺序执行他们各自的构造函数,再继续执行本类的构造函数; (3)对于非静态的局部对象,他们的析构函数的执行顺序与...
  • 调用其他对象成员 var cat = {name:'tom', climb:function () { console.log(this.name + '在爬树'); }}; cat.climb(); var dog = {name:'旺财', hobby:'看家'}; //使用dog调用cat的方法 dog.pa = cat....
  • Python类对象成员与类实例对象成员

    千次阅读 2018-06-05 13:49:34
    #Person类对象成员Count公有。 _income=0; #Person类对象成员income保护,其派生类可以引用。 __Tel="13088888888" #Person类对象成员Tel,是私有,在类定义中可以引用。 def __init__(self,name,...
  • C++ 引用对象成员的三种方式

    千次阅读 2016-12-12 12:06:35
    在程序中经常需要访问对象中的成员。访问对象中的成员可以有3种方法: 1.通过对象名和成员运算符访问对象中的成员; 2.通过指向对象的指针访问对象中的成员; 3.通过对象的引用变量访问对象中的成员。 通过...
  • 很多人都知道C++类是由结构体发展得来的,所以他们的成员变量(C语言的结构体只有成员变量)的内存分配机制是一样的。下面我们以类来说明问题,如果类的问题通了... 一个类对象的地址就是类所包含的这一片内存空间的
  • C++之指向对象成员函数的指针

    千次阅读 2015-09-16 10:09:28
    1. 普通函数的指针变量定义  数据类型名 (*指针变量名)(参数列表);  例如:void (*p)( ); //p指向void型函数的指针...2. 指向对象成员函数的指针变量[指向对象成员函数的指针变量与普通函数的指针变量的根本区别
  • 第五讲:类的成员、对象成员的引用  掌握:类成员函数的性质、定义及存贮方式。对象成员三种引用方式,。  理解:类函数、作用域运算符、inline成员函数的概念。  重点、难点: 类成员函数的性质、定义、存贮...
  • js获取数组元素个数和对象成员

    万次阅读 2016-08-01 03:41:19
    ...Javascript怎么得到数组长度(也就是数组的元素个数)?...Javascript怎么获取对象成员个数? 你肯定想到了array.length!? 那么我们来测试一下下面这个例子.  var a = [];  a[50] = 50
  • 如果类中有多个同一个类的多个对象成员,如何初始化。 类名:构造函数名(形参):对象1(参数表),对象2(参数表)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,401,481
精华内容 560,592
关键字:

对象成员

友情链接: RINEX FILE CONVERTER.zip