精华内容
下载资源
问答
  • C++11: 使用 lambda 创建模板类对象

    千次阅读 2012-03-09 11:46:46
    C++ 中 lambda 可以直接传递给模板函数如 std::sort, 但无法传给模板如 std::map,但是,使用一点小技巧,可以使用 lambda 创建模板类对象,省了很多麻烦的 coding。这里给出一个示例: #include #include ...

    C++ 中 lambda 可以直接传递给模板函数如 std::sort, 但无法传给模板类如 std::map,但是,使用一点小技巧,可以使用 lambda 创建模板类的对象,省了很多麻烦的 coding。这里给出一个示例:

    #include <stdio.h>
    #include <map>
    
    template<class Key, class Value, class Compare>
    std::map<Key, Value, Compare> make_map(Compare comp) {
        return std::map<Key, Value, Compare>(comp);
    }
    
    int main() {
        auto m = make_map<int,int>([](int x, int y) { return x < y; });
        m[1] = 11;
        m[2] = 22;
        for (auto x : m) {
            printf("%d->%d\n", x.first, x.second);
        }
        return 0;
    }                                    

    make_map 可以被返回值优化掉。
    展开全文
  • 对象、定义创建对象

    千次阅读 2018-07-09 19:35:00
    对象对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类类就相当于制造飞机时的图纸,用它来进行创建的飞机就相当于对象1. 人以类聚 ...

    类和对象

    面向对象编程的2个非常重要的概念:类和对象

    对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类

    类就相当于制造飞机时的图纸,用它来进行创建的飞机就相当于对象

    1. 类

    人以类聚 物以群分。
    具有相似内部状态和运动规律的实体的集合(或统称为抽象)。 
    具有相同属性和行为事物的统称
    

    类是抽象的,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在。一个类可以找到多个对象

    2. 对象

    某一个具体事物的存在 ,在现实世界中可以是看得见摸得着的。
    
    可以是直接使用的

    3. 类和对象之间的关系

    小总结:类就是创建对象的模板

    4. 练习:区分类和对象

    奔驰汽车 类
    奔驰smart 类 
    张三的那辆奔驰smart 对象
    狗 类
    大黄狗 类 
    李四家那只大黄狗 对象 
    水果 类
    苹果 类 
    红苹果 类 红富士苹果 类 
    我嘴里吃了一半的苹果 对象
    

    5. 类的构成

    类(Class) 由3个部分构成

    • 类的名称:类名
    • 类的属性:一组数据
    • 类的方法:允许对进行操作的方法 (行为)

    6. 类的抽象

    如何把日常生活中的事物抽象成程序中的类?

    拥有相同(或者类似)属性和行为的对象都可以抽像出一个类

    方法:一般名词都是类(名词提炼法)

    定义类

    定义一个类,格式如下:

    class 类名:
        方法列表
    

    demo:定义一个Hero类

    # class Hero:  # 经典类(旧式类)定义形式
    # class Hero():
    
    class Hero(object):  # 新式类定义形式
        def info(self):
            print("英雄各有见,何必问出处。")
    

    说明:

    • 定义类时有2种形式:新式类和经典类,上面代码中的Hero为新式类,前两行注释部分则为经典类;

    • object 是Python 里所有类的最顶级父类;

    • 类名 的命名规则按照"大驼峰命名法";

    • info 是一个实例方法,第一个参数一般是self,表示实例对象本身,当然了可以将self换为其它的名字,其作用是一个变量 这个变量指向了实例对象

    创建对象

    python中,可以根据已经定义的类去创建出一个或多个对象。

    创建对象的格式为:

    对象名1 = 类名()
    对象名2 = 类名()
    对象名3 = 类名()
    

    创建对象demo:

    class Hero(object):  # 新式类定义形式
        """info 是一个实例方法,类对象可以调用实例方法,实例方法的第一个参数一定是self"""
        def info(self):
            """当对象调用实例方法时,Python会自动将对象本身的引用做为参数,
                传递到实例方法的第一个参数self里"""
            print(self) 
            print("self各不同,对象是出处。")
    
    
    # Hero这个类 实例化了一个对象  taidamier(泰达米尔)
    taidamier = Hero()
    
    # 对象调用实例方法info(),执行info()里的代码
    # . 表示选择属性或者方法
    taidamier.info()
    
    print(taidamier)  # 打印对象,则默认打印对象在内存的地址,结果等同于info里的print(self)
    print(id(taidamier))  # id(taidamier) 则是内存地址的十进制形式表示

    展开全文
  • java之的定义和对象创建

    千次阅读 2018-12-28 17:23:27
    是构造对象模板或蓝图。就像建筑物与设计图纸,通过一份设计图纸,可以构造处建筑物,而Java开发人员在编写代码时,实际上是编写代码,对象只有程序运行时才存在。  当用户创建一个Java程序时,可以通过...
    • 类的基本结构

           如果一切都是对象,那么是什么决定某一类对象的行为与外观呢?答案时“类”。类是构造对象的模板或蓝图。就像建筑物与设计图纸,通过一份设计图纸,可以构造处建筑物,而Java开发人员在编写代码时,实际上是编写类代码,对象只有程序运行时才存在。

           当用户创建一个Java程序时,可以通过类声明来定义类。通常,这些类里没有main方法,只有一些属性和方法。一个完整的程序,应该由若干个类组成,其中一般只有一个类有main方法。

    在Java中,最简单的类的定义语法为:

    class 类名

    {

           //类中的代码

    }

    第一行称为类的声明。两个花括号之间的部分称为类体,类体中可以包含方法或成员变量。

    例如下面代码定义了一个简单的类Student。

    class  Student   { .......}

    在具体的编程中,一个完整的类还包含构造函数、成员变量、方法等,将在后面逐一介绍。


    • 类之间的关系

    在面向对象的思想中,类之间存在一下几种常见的关系

    1、USES-A 关系

          “USES-A 关系” 是一种最明显、最常见的关系,若类A中的方法操纵了类B(对象)的成员,则称之为类A “USES-A” (用到了)类B。例如,汽车启动前检查汽油是否足够,例:

    class Car
    {
    	private int cubage=100;
    	
    	public void startIsEnough()
    	{
    		if(cubage>80)
    			System.out.println("汽油充足,汽车可以启动");
    		else 
    			System.out.println("汽车不可以启动");
    	}
    
    }
    public class Sample3_1 
    {	
    	public static void main(String[] args) 
    	{
    		// TODO Auto-generated method stub
    		Car c=new Car();
    		c.startIsEnough();
    
    	}
    
    }
    

           在上述例子中,main方法实例化Car类后,调用startIsEnough()方法,形成“IS-A”关系。因为汽油储量设备为100,满足储备量充足规则,可以启动,所以运行结果中打印了”汽油充足,可以启动”。

     

    2、HAS-A关系

    “HAS-A”关系是一种拥有关系,若类A中有B类型的成员引用变量,则类A“HAS-A”(即拥有)类型B。例如,轿车拥有轮胎:

    class Car
    {
    	private Type t=new Type();
    	
    	public Type getTypeInfo()
    	{
    		return t;
    	}
    }
    class Type 
    {
    	private String material="橡胶" ;
    	private String color="黑色" ;
    	
    	public String getMaterial()
    	{
    		return material;
    	}
    	
    	public String getColor()
    	{
    		return color;
    	}
    }
    public class Sample3_2 
    {
    
    	public static void main(String[] args) 
    	{
    		// TODO Auto-generated method stub
    		Car c=new Car();
    		System.out.println("轮胎的颜色为:"+c.getTypeInfo().getColor());
    		System.out.println("轮胎的材料为:"+c.getTypeInfo().getMaterial());
    	}
    
    }
    

    通过上述代码可以看出“HAS-A”关系的具体含义,由于汽车对象拥有了轮胎对象,所以汽车对象也就拥有了轮胎对象中的一切可见信息。

     

    3、IS-A关系

              在面向对象中“IS-A”的概念是基于继承的, 旨在表达一个类是另一个类的子类。也就是说,若类A是类B子类的一种,则可以说类A  “IS-A”(是一种)类B。例如,“苹果”是“水果”的一种,则他们之间的关系为“苹果” IS-A(是一种)“水果”。

            在实际开发中需要同时用到以上介绍的几种关系,要抓住现实世界中事物之间的实际关系来进行抽象,然后再Java世界中建立模型。如果搞错了关系的类型,有可能影响系统的开发或维护。


    • 构造函数

            在创建对象时,对象的成员可以由构造函数方法进行初始化。构造函数是一种特殊的方法,它具有和他所在的类完全一样的名字。一旦定义好一个构造函数,创建对象时就会自动调用它。构造函数没有返回类型,这是因为一个类的构造函数的返回值就是这个类本身。构造函数的任务就是初始化以一个对象的内部状态,所以用new操作符创建一个实例后,立刻就会得到一个可用的对象。例如,利用构造函数初始化汽车的各项参数:

    package Car;
    class Car
    {
    	private String color;
    	private String brand;
    	
    	//下面为构造函数,构造函数与类名相同。在构造函数中,初始化汽车的颜色和品牌
    	public Car()
    	{
    		this.color="黑色";
    		this.brand="大众";
    	}
    	
    	//构造方法
    	public String getColor()
    	{
    		return this.color;
    	}
    	public String getBrand()
    	{
    		return this.brand;
    	}
    }
    public class Sample3_3 
    {
    
    	public static void main(String[] args) 
    	{
    		// TODO Auto-generated method stub
    		Car c=new Car();
    		System.out.println("汽车的颜色为:"+c.getColor());
    		System.out.println("汽车的品牌为:"+c.getBrand());
    	}
    
    }
    

           在上面的例子中,main方法实例化Car类时,调用Car类的构造函数初始化类变量。在Car类中,构造函数是不包含任何参数的。有时也需要为构造函数定义参数,方便赋值,下面的例子同时定义了两个构造函数,分别带参数和不带参数:

    package Car;
    class Car
    {
    	private String color;
    	private String brand;
    	
    	//无参构造函数
    	public Car()
    	{
    		this.color="黑色";
    		this.brand="大众";
    	}
    	
    	//有参构造函数
    	public Car(String co ,String br )
    	{
    		this.color=co;
    		this.brand=br;
    	}
    	
    	//构造方法
    	public String getColor()
    	{
    		return this.color;
    	}
    	public String getBrand()
    	{
    		return this.brand;
    	}
    }
    public class Sample3_3 
    {
    
    	public static void main(String[] args) 
    	{
    		// TODO Auto-generated method stub
    		Car c1=new Car();
    		System.out.println("汽车的颜色为:"+c1.getColor());
    		System.out.println("汽车的品牌为:"+c1.getBrand());
    		
    		Car c2=new Car("红色","奥迪");
    		System.out.println("汽车的颜色为:"+c2.getColor());
    		System.out.println("汽车的品牌为:"+c2.getBrand());
    
    	}
    
    }
    

    上面说的例子当中,包含两个构造函数,有时一个类可能有多个构造函数,每个构造函数的参数类型均不相同,多个构造函数可看作方法的重载,只能根据参数类型匹配合适的构造函数。但构造方法与普通方法不同,是一种特殊的方法,具体有以下特点:

    1. 构造方法的方法名必须与类名相同
    2. 构造方法没有返回类型,也不能定义为void,在方法名面前不声明方法类型
    3. 构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域
    4. 构造方法不能由编程人员调用,而要系统调用
    5. 构造方法可以重载,以参数的个数,类型或排列顺序区分
    6. 一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参的默认构造器,这个构造器不执行任何代码

    • 类成员

    定义了类之后,就可以在类体中声明两种类的成员,成员变量与成员方法。

    1、成员变量的使用

           成员变量就是类的属性,类定义中的属性指定了一个对象区别于其他对象的值。例如,学生类的定义包括年龄、姓名和班级这些属性,每个对象的这些属性都有自己的值。所有由类定义建立的对象都共享类的方法,但是,它们都具有各自属性变量的副本。

           成员变量有时也可以称为实例变量,其定义写在类体中:

    class Student
    {
    	public int stuAge;
    	public String stuName;
    	public String stuClass; 
    	//年龄,姓名,班级
    }
    public class Sample3_5 
    {	
    	public static void main(String[] args) 
    	{
    		// TODO Auto-generated method stub
    		Student s1=new Student();
    		Student s2=new Student();
    
    		//为s1赋值
    		s1.stuAge=21;
    		s1.stuName="张三";
    		s1.stuClass="200801";
    		
    		//为s2赋值
    		s2.stuAge=23;
    		s2.stuName="李四";
    		s2.stuClass="200802";
    		
    		System.out.println(s1.stuName+' '+s1.stuAge+' '+s1.stuClass);
    		System.out.println(s2.stuName+' '+s2.stuAge+' '+s2.stuClass);
    	}
    
    }
    

           有点像C语言中的结构体,从上述例子中可以看出,两个对象成员变量有其各自的值,互不影响,new操作创建对象后将返回其引用值,一般在new操作完成后都将其返回的对象引用赋值给一个引用,也就是让引用指向创建的对象。如果只是用new操作创建对象不让某个引用指向该对象,则对象自创建后就不能对其进行访问了。因为在Java中,访问对象只能通过指向对象的引用来实现。

     

    2、成员变量的初始值

    变量类型 默认值
    boolean false
    char '\u000'
    byte 0
    short 0
    int 0
    long 0L
    float 0.0F
    double 0.0D
    对象引用型 null

           对象引用型成员变量,其初始值为null,表示此引用没有指向任何对象,这里需要注意的是,字符串(String)类型空引用(null)与空字符串不同,空引用表示没有指向任何对象,而空字符串表示内容为空的字符串对象。


    • 对象的创建

           有了类就可以利用其创建对象了,在Java中创建对象很简单,只要用new关键字即可,由类创建对象的过程中称为实例化,每个对象是类的一个实例,如学生类是对什么是学生做定义,而张三、李四是学生类的实例。

           创建对象与基本类型的声明类似,首先说明创建对象的所属类名,然后为对象的名称,例如 Student s=new Student();Student 为对象所属类,s为对象名称,通过new为新对象创建内存空间。与变量相比,对象的内存控件要大很多,因为对象是以类为模板创建的具体实列,具有属性和方法,例如s对象具有班级、姓名等属性,具有上课、下课等方法。如果要调用该对象则需要用点运算符' . '连接需要的属性和方法,例如s.name=“李四”;。

     

     

     

     

     

     

     

     

     

    展开全文
  • 【C++】C++的定义和对象创建

    千次阅读 2018-10-11 12:38:43
    类是创建对象模板,一个类可以创建多个对象,每个对象是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象是类的一个具体实例(Instance),拥有类的成员变量和成员函数。     在面向对象的编程...

    类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。

     

     

    在面向对象的编程语言中,经常把函数(Function)称为方法(Method)。

     

     

    class是 C++ 中新增的关键字,专门用来定义类。

     

     

    类只是一个模板(Template),编译后不占用内存空间,所以在定义类时不能对成员变量进行初始化,因为没有地方存储数据。只有在创建对象以后才会给成员变量分配内存,这个时候就可以赋值了。

     

     

    Student是类名,liLei是对象名。这和使用基本类型定义变量的形式类似:

    int a; //定义整型变量

    从这个角度考虑,我们可以把 Student 看做一种新的数据类型,把 liLei 看做一个变量。

     

     

    除了创建单个对象,还可以创建对象数组:

    Student allStu[100];

    该语句创建了一个 allStu 数组,它拥有100个元素,每个元素都是 Student 类型的对象。

     

     

     

    也就是说,使用 new 在堆上创建出来的对象是匿名的,没法直接使用,必须要用一个指针指向它,再借助指针来访问它的成员变量或成员函数。

     

     

    栈内存是程序自动管理的,不能使用 delete 删除在栈上创建的对象;堆内存由程序员管理,对象使用完毕后可以通过 delete 删除。

     

     

    代卖示例:

    #include <iostream>
    using namespace std;
    
    class Student {
    public:
    	const char *name;
    	int age;
    	float score;
    
    	void say() {
    		cout << name << "的年龄是" << age << ",成绩是" << score << endl;
    	}
    };
    
    int main() {
    	Student *pStu = new Student;
    	pStu->name = "小明";
    	pStu->age = 15;
    	pStu->score = 92.5f;
    	pStu->say();
    	delete pStu;  //删除对象
    
    	getchar();
    	return 0;
    }

     

    展开全文
  • 一个类创建对象可以是另一个类创建对象的属性 需求 1. 士兵有一把AK47 2. 士兵可以开火 3. 枪能够发射子弹 4. 枪装填子弹 # coding:utf-8 class Gun: def __init__(self, model): self.model = model ...
  • 一、用模板实现单例模式 在前面的文章中,用过多种方法实现单例模式,现在用模板方式来实现: 为了实现线程安全,需要在linux 下使用pthread_mutex_t 加锁,请使用g++ 编译并需要链接 -lpthread 使用的是double-...
  • C++创建类对象方法和动态对象数组

    千次阅读 2019-03-17 16:03:57
    创建类对象的方法 C++中有两种创建对象的方法,一种是直接声明,另一种则是使用new关键字,虽然作用相同,但是它们底层的存储方式却完全不同。在此之前,我们先了解一下C++程序的存储形式。 C++程序的内存格局通常...
  • 在C++里,有两种方法创建对象: 方法一: ClassName object(param); 这样就声明了一个ClassName类型的object对象,C++会为它分配足够的存放对象所有成员的存储空间。 注意:为节省存储空间,C++创建
  • Unity3D 用对象创建对象

    千次阅读 2020-03-19 16:00:57
    在 Unity3d 中会用到从一个游戏对象复制出一个新的游戏物体的方式,如制作射击游戏的子弹等...一般此时游戏对象都是使用模板对象,在 Unity3d 里面制作一个模板是十分简单的,只需要在 Hierarchy 里面的物体拖动放到...
  • 函数模板类模板的区别

    千次阅读 2017-07-18 23:16:42
    转自:函数模板类模板有什么区别? 答:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由...这期间有涉及到函数模板模板函数,类模板模板类的概念 (类似于类对象的区别)
  • Unity自定义创建脚本模板菜单

    千次阅读 2017-05-05 23:09:19
    unity中我们可以在Project面板右键或通过Assets菜单创建脚本或是shader,unity为我们提供了C#,javascript脚本以及四个shader代码的模板,当创建这些脚本时实际上是复制这些模板并改变其类名或是shader名,我们可以...
  • 动态创建模板,视图和文档对象的过程 我就不明白,使用这样的语句:CMyDoc mydoc或pmydoc=new CMyDoc都可以很 好地创建文档类对象,或者用同样的方法创建视图类对象或框架窗口类对象,为 什么又弄出个动态创建的概念...
  • 创建类Person和对象

    千次阅读 2017-10-24 20:38:48
    package shirong; public class Person { String name;...对象创建:类名 对象名=new 类名();也许大多数学习java的都会写,但是理解方面是这样的,new一个类名...创建对象模板创建对象也叫的实例化。
  • 既然对象是以模板生成的,那么又是以什么为模板生成的? 元具有动态改变的能力,给编程带来了更方便的动态性和能力。 新型相比于传统,支持更多特性和机制,有更多的弹性。 文章目录 元 工厂 初始...
  • 类模板实际上是函数模板的推广,可以用相同的类模板来组建任意类型的对象集合 (一)、类模板的定义 template class { //说明体 }; template ::(形参表) { //成员函数定义体 } template ::(形参表) { ...
  • C++函数模板类模板的区别

    万次阅读 多人点赞 2018-07-18 16:54:55
    类模板: C++ 除了支持函数模板,还支持类模板(Class Template)。函数模板中定义的类型参数可以用在函数声明和函数定义中,类模板中定义的类型参数可以用在声明和实现中。类模板的目的同样是将数据的类型参数...
  • new创建类对象,使用完后需使用delete删除,跟申请内存类似。所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化的全局指针似乎更加高
  • 对象

    千次阅读 多人点赞 2019-05-15 21:49:28
    :是抽象概念,表示的是一个共性的产物,之中定义的是属性和行为(方法),是创建对象模板; 什么是对象? 万物皆对象对象是客观存在的事物,可以说任何客观存在的都是可以成为对象,表示一个独立的个体,每...
  • 什么是面向对象,以及什么是类对象

    千次阅读 多人点赞 2019-08-11 19:04:04
    什么是面向对象,以及什么是类对象 ​ 1.1面向过程与面向对象的区别 ​ 面向对象是一种现在最为流行的程序设计方法 。将面向过程与面向对象进行比较。 ​ 首先这两个种都是一种编程思维, 在一些简单的动作...
  • 创建TPL自定义模板

    千次阅读 2017-03-30 14:41:35
    创建初始模板所需要的文件和文件夹    1.index.php主文件,用于编写业务逻辑  2.template.inc.php模板初始化文件,用于初始化模板信息  3.templates目录用于存放所有的模板文件  1)index.tpl模板文件  4....
  • 模板在Python中被称为,而根据图纸做出来的战斗机这些具体的东西再Python中就是对象对象是需要才能创造出来的,根据飞机图纸,我们可以做出很多飞机,这就说明根据可以创造出多个对象由三个部分组成: ...
  • 什么是对象对象(Object)是一个应用系统中的用来描述客观事物的实体,是有特定属性和行为(方法)的基本运行单位。是类的一个特殊状态下的实例。对象可以是一个实体、一个名词、一个可以...类是对象模板,它...
  • C++之——类模板与函数模板用法

    千次阅读 2018-07-13 10:22:41
    模板是一种对类型进行参数化的工具; 通常有两种形式:函数模板和模板; 函数模板针对仅参数类型不同的函数; 模板针对仅数据成员和成员函数类型不同的。 使用模板的目的就是能够让程序员编写与类型无关的代码...
  • 面向对象分为 基于原型的面向对象和基于模板的面向对象。 JavaScript:面向对象,基于事件的网页脚本语言。 Java:基于模板的面向对象。 class A {  private String name;  public void fun() ...
  • 类模板的使用

    千次阅读 2015-06-29 10:25:21
    所谓类模板,实际上是建立一个通用,其数据成员,成员函数的返回类型和形参类型不具体指定,用一个虚拟的类型来代表。类模板代表了一类类模板类表示某一具体的
  • IntelliJ IDEA中创建xml模板

    万次阅读 多人点赞 2019-01-25 01:08:49
    1、File—Setting,左上角输入template, ...5、输入模板名字:applicationContext (name可以自定义) 6、后缀名extension:xml 7、在面板中输入内容(看下面代码) 8、把Enable live Template(激活模板)勾选上 9...
  • C#通过模板创建Word文件

    千次阅读 2015-06-26 09:45:15
    C#通过模板创建Word文件,模板文件中创建书签bookmark,并在调用时给...模板创建文件 /// ///创建Word格式的Report 的摘要说明 /// public class CreateWordReport { private _Application wordApp = null;
  • 【C++】数组的定义(类模板)

    万次阅读 多人点赞 2016-06-17 17:36:06
    一个类模板(也称为生成)允许用户定义为定义的一种模式,是的中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型 包括系统预定义的和用户自定义的

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 406,558
精华内容 162,623
关键字:

对象是创建类的模板