类和对象

类和对象(中)C++

本小妞迷上赌 提交于 2019-12-05 01:14:02
类中哪些默认的事儿…… 1. 类的6个默认成员函数: 如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情 况下,都会自动生成下面6个默认成员函数。 class Date{}; 2. 构造函数: 构造函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员 都有 一个合适的初始值,并且在对象的生命周期内只调用一次。 构造函数的给出方式如下,参数可以给出缺省值,也可以重载构造函数。 class Date { public: Date(int year = 2000,int month=1,int day=1) { _year = year; _month = month; _day = day; } private: int _year; int _month; int _day; }; int main() { Date d1; return 0; } 构造函数是特殊的成员函数,需要注意的是,构造函数的虽然名称叫构造,但是需要注意的是构造函数的主 要任务并不是开空间创建对象,而是初始化对象。 其特征如下: 1、 函数名与类名相同。 2、无返回值。 3、对象实例化时编译器自动调用对应的构造函数。 4、构造函数可以重载。 5、如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定

2.深入类和对象

拜拜、爱过 提交于 2019-12-04 23:05:20
1.1.鸭子类型和多态 “当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。” 我们并不关心对象是什么类型,到底是不是鸭子,只关心行为。 实例一: # 鸭子类型和多态简单实例 class Dog(object): def say(self): print('a dog') class Cat(object): def say(self): print('a cat') class Duck(object): def say(self): print('a duck') animal_list = [Dog,Cat,Duck] for animal in animal_list: animal().say() #运行结果 a dog a cat a duck 实例二: 类只要实现了__getitem__方法,它就是可迭代的,并不关心对象的本身,只关心行为,然后就可以当做extend的参数。 class Company(object): def __init__(self, employee_list): self.employee = employee_list def __getitem__(self, item): return self.employee[item] company = Company(["11", "22", "33"])

Java类和对象 详解(二)

久未见 提交于 2019-12-04 18:02:11
上一篇 Java类和对象 详解(一) 讲解了类和对象的基本概念,定义和使用,以及对象引用传递的初步分析,下面接着来讲其他内容。 一、面向对象的封装性 封装(encapsulation)又叫隐藏实现(Hiding the implementation)。就是只公开代码单元的对外接口,而隐藏其具体实现。比如手机,手机的键盘,屏幕,听筒等,就是其对外接口。你只需要知道如何按键就可以使用手机,而不需要了解手机内部的电路是如何工作的。封装机制就像手机一样只将对外接口暴露,而不需要用户去了解其内部实现。 在研究封装性之前,我们先来看一段代码: package com.wz.classandobj; class Book{ String title; double price; public void getInfo (){ System. out .println( "图书的名称:" +title+ " 图书的价格:" +price); } } public class TestDemo { public static void main (String args[]) { Book book = new Book(); book.title = "Java开发" ; book.price = - 89.9 ; book.getInfo(); } } 运行结果: 图书的名称:Java开发

学习:类和对象——多态

冷暖自知 提交于 2019-12-04 14:24:26
多态的基本概念: 多态是C++面向对象三大特性之一 多态分为两类 1、静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名 ,那么这个我们之前都有用到过 2、动态多态: 派生类和虚函数实现运行时多态 静态多态和动态多态区别: 1、静态多态的函数地址早绑定 - 编译阶段确定函数地址 2、动态多态的函数地址晚绑定 - 运行阶段确定函数地址 示例代码: #include<iostream> #include<string> using namespace std; class Animal { public: virtual void speak() { // 进行virtual修饰成员函数,变成虚函数,那么编译器在编译的时候就不能确定函数调用了。 cout << "动物在说话" << endl; } }; class Dog :public Animal{ public: void speak() { cout << "小狗在说话" << endl; } }; class Cat :public Animal { public: void speak() { cout << "小猫在说话" << endl; } }; void aaa(Animal & animal) { animal.speak(); } void test01() { Cat c1; aaa(c1);

学习:类和对象——初始化列表和内部类

痞子三分冷 提交于 2019-12-04 12:09:32
初始化列表: 作用: C++提供了初始化列表语法,用来初始化属性 自己感觉比较好理解,就简单了几行代码吧,但是在 类中存储类 的时候使用还是需要注意下的 一个简单的示例 #include<iostream> #include<string> using namespace std; class Person{ public: Person() { cout << "无参构造" << endl; } Person(int a, int b,int c): m_a(a),m_b(b),m_c(c) { cout << "有参构造" << endl; cout << m_a << m_b << m_c << endl; } private: int m_a; int m_b; int m_c; }; int main() { Person p1(1, 2, 3); system("pause"); return 0; } 类对象作为类成员: 刚面提到的注意点其实也就是在这里了 C++类中的成员可以是另一个类的对象,我们称该成员为 对象成员 这里代码的话直接copy老师的了哈 这里需要注意的是类中包含类的时候 构造函数 和 析构函数 调用的顺序,先调用 内部类 的构造方法然后再调用 外部类 的构造方法,然后对于析构方法的调用顺序是相反的,先是 外部类 析构方法调用,然后再是 内部类

学习:类和对象——静态成员变量和函数

随声附和 提交于 2019-12-04 12:09:28
静态成员: 静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员 静态成员分为: 静态成员变量和静态成员函数,其中这两个特点如下 静态成员变量: 特点1、所有对象共享同一份数据 特点2、在编译阶段分配内存 特点3、类内声明,类外初始化 静态成员函数: 特点1、所有对象共享同一个函数 特点2、静态成员函数只能访问静态成员变量 静态成员变量: 示例代码: #include<iostream> #include<string> using namespace std; class Person { public: Person() { cout << this->b << endl; } public: static int a; //定义一个共享静态成员变量 private: static int b; //定义一个私有静态成员变量 }; int Person::a = 1; int Person::b = 2; void test01() { Person p1; cout << p1.a << endl; // 生成p1的对象 直接访问不可以,因为没有在外部对静态成员进行初始化 //cout << p1.b << endl; //无法进行访问,因为静态变量b是私有的 //由于静态成员变量是存在于全局区的,所以我们可以直接通过类名进行访问 cout <<

学习:类和对象——深拷贝和浅拷贝

ε祈祈猫儿з 提交于 2019-12-04 12:08:52
深拷贝和浅拷贝: 浅拷贝:简单的赋值拷贝操作 深拷贝:在堆区重新申请空间,进行拷贝操作 深拷贝就是为了解决浅拷贝带来的问题而产生的 浅拷贝: 大家先看下这段代码: #include<iostream> #include<string> using namespace std; class Person { public: Person() { cout << "这是无参构造函数" << endl; } Person(int age, int height) { cout << "这是有参构造函数" << endl; this->my_Age = age; this->my_height = new int(height); } ~Person() { if (this->my_height != NULL) { delete my_height; my_height = NULL; } cout << "这是析构函数" << endl; } public: int my_Age; int * my_height; }; void test01() { Person p1(18,160); //进行有参构造函数 Person p2(p1); //进行拷贝构造函数 cout << "p1的年龄为 " << p1.my_Age << ", p1的身高为 " << *(p1.my

类和对象

[亡魂溺海] 提交于 2019-12-04 11:56:03
类和对象 一、类和对象 类的意思:种类、分类、类别 对象是特征与技能的结合体,我可能有身高体重、而你也有身高体重,所以你会说你像我,但是你一定不会说你像阿猫阿狗。并且我和你其实就可以说成是一类,而你和选课系统不能说是一类,因此给出类的定义:类就是一系列对象相似的特征与技能的结合体。 在现实世界中:先有一个个具体存在的对象,然后随着人类文明的发展才了分类的概念,既然现实世界中有类这个概念,Python程序中也一定有类这个概念,但是在Python程序中:必须先定义类,然后调用类来产生对象。 二、现实世界中定义类和对象 2.1 定义对象 就拿未来我们的选课系统来讲,我们先总结一套现实世界中的学生对象: 对象1: 特征: 学校='oldboy' 姓名='耗哥' 年龄=18 性别='male' 技能: 选课 对象2: 特征: 学校='oldboy' 姓名='猪哥' 年龄=17 性别='male' 技能: 选课 对象3: 特征: 学校='oldboy' 姓名='帅翔' 年龄=19 性别='female' 技能: 选课 2.2 定义对象 站在未来选课系统的角度,我们还可以总结现实世界中的学生类: 老男孩学生类: 相似的特征: 学校='oldboy' 相似的技能 选课 三、程序中定义类和对象 3.1 定义类 # 注意类中定义变量使用驼峰体 class OldboyStudent(): school

类和对象

寵の児 提交于 2019-12-04 09:08:10
类和对象 现实世界中客观存在的任何事物都可以被看做对象。 Java是一种面向对象的编程语言,因此我们要学会用面相对象的思想考虑问题和编写程序。、 对象的属性和方法: 在面型对象的编程思想中,把对象的静态特征和动态特征分别称为对象的属性和方法,它们是构成对象的两个主要因素。 类:类定义了对象将会拥有的特征(属性)和行为(方法)。 类的属性:对象所拥有的静态特征在类中表示时称为类的属性。 类和对象的关系:一个类为它的全部对象给出了一个统一的定义,而它的每个对象则是符合这种定义的一个实体。因此类和对象的关系就是抽象与具体的关系。 类是对象的类型。 定义类名public class 类名{ } 访问修饰符返回值类型方法名(){   方法体 } 创建和使用对象 类名 对象名=new 类名(); 面向对象程序设计的优点: 与人类的思维习惯一致。 隐藏信息,提高了程序的可维护性和安全性。 提高了程序的可重用性。 使用类的步骤: 定义类:使用关键字class。 创建类的对象:使用关键字new。 使用类的属性和方法:使用"."操作符。 来源: https://www.cnblogs.com/55tt/p/11851779.html

js类和对象的区别,函数以及new的理解

こ雲淡風輕ζ 提交于 2019-12-04 09:05:00
一、类:一类事物的抽象;(如:人类、猫类) ​ 二、对象:类里面具体的某个事物;(如:人类中的小明、猫类中的叮当猫)  三、函数(方法):对象有很多属性,比如:身高、体重、性别等;而函数是对象的会执行的动作 比如:吃、喝、拉、撒、睡  class Person{//类里面 只能放函数 这些函数会被存储在类的公共空间(__proto__)里面   constructor(){     //类里面固有的一个函数     this.eat()如果把函数放在constructor里面 当class被new的时候会被执行 这是new的一个特点   }   eat(){}   drink(){}  }  -new的特点:1.执行函数;2.自动创建空对象; 3.把创建的对象和this绑定; 4. 隐式返还this(即实例化之后的对象);  let person = new Person();  个人理解,以后再看的时候再补上不足吧 来源: https://www.cnblogs.com/jzbs/p/11851692.html