浅谈类与对象

1.抽象:是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。

数据抽象:某类对象的属性或状态

行为抽象:某类对象的共同行为或功能特征(方法)

2.封装:将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体。也就是将数据和操作数据的函数代码进行有机的结合,形成类。

3.继承

4.多态

1.带默认形参值的成员函数

类成员函数的默认值,一定要写在类定义中,而不能写在类定义之外的函数中。

Class clock{

Public:

Void setTime(int newH=0, int newM=0, int news=0);

}

如果调用这个函数时没有给出实参,就会按照默认的形参值将时钟设置到午夜0点。

2.内联成员函数(inline function)

内联函数的声明有两种方式:隐式声明和显示声明。

(1)隐式声明:将函数直接放在类体里。

class Clock{

public:

void showTime(){

cout<<hour<<”:”<<minute<<”:”<<second<<endl;

}

(2)显示声明:采用关键字inline。在函数体实现时,在函数返回值类型前加上inline,类定义中不加showTime()的函数体。

Inline void showTime(){

cout<<hour<<”:”<<minute<<”:”<<second<<endl;

}

3.构造函数

(1)构造函数的函数名和类名相同

(2)没有返回值

(3)声明为public

构造函数在对象被创建时自动调用,调用时无须提供参数的构造函数称为默认构造函数。

构造函数的重载:有参数的和无参数的。

复制构造函数

特点:其形参是本类的对象的引用。其作用是使用一个已经存在的对象,去初始化同类的一个新对象。

class 类名{

public:

类名(形参表);

类名(类名 &
对象名);

};

类名::类名(类名 &
对象名){

//函数体

}

复制构造函数在3中情况下被调用:

(1)当用类的一个对象去初始化该类的另一个对象时。

int main(){

Point a(1,2);

Pointb(a); //用对象a去初始化b,调用复制构造函数

Pointc=a; //用对象a去初始化c,调用复制构造函数

return0;

}

(2)如果函数的形参是类的对象,调用函数时,进行形参和实参的结合。

void f(Point p){

cout<<p.getX()<<endl;

}

int main(){

Point a(1.2)

f(a);

return0;

}

注意:只有把对象用值传递时,才会调用复制构造函数;如果传递引用,则不会调用。

(3)如何函数的返回值是类的对象,函数执行完成返回调用者时。

Point g(){

Point a(1,2);

return a;

}

int main(){

Point b;

b=g();

return 0;

}

4.析构函数

(1)类名前加~

(2)没有返回值

(3)不接收任何参数,可以是虚函数。

作用:用来完成对象被删除前的一些清理工作,在对象生命周期即将结束的时刻被调用。

时间: 2024-10-02 03:40:56

浅谈类与对象的相关文章

C++之浅谈类与对象&lt;一&gt;

类与对象是C++语言的一个特点,类是对象的抽象,对象是类的实例. 类是抽象的需要占用内存,而对象时实例化的占用内存. 下面举个例子: class Time  //定义类 { int hour;   //定义数据成员 int min;    //定义数据成员 int sec;    //定义数据成员 }; Time t; 看着这个结构是不是有点眼熟呢,跟C语言中学过的struct的应用很类似,但是两者之间还是有区别的:在struct中若没有特别声明,结构体的成员都是public公有成员:而clas

浅谈Java回收对象的标记和对象的二次标记过程_java - JAVA

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 一.对象的标记 1.什么是标记?怎么标记? 第一个问题相信大家都知道,标记就是对一些已死的对象打上记号,方便垃圾收集器的清理. 至于怎么标记,一般有两种方法:引用计数和可达性分析. 引用计数实现起来比较简单,就是给对象添加一个引用计数器,每当有一个地方引用它时就加1,引用失效时就减1,当计数器为0的时候就标记为可回收.这种判断效率很高,但是很多主流的虚拟机并没有采用这种方法,主要是因为它很难解决几个对象之间循环引用的

浅谈类的组合

4. 类的组合 4.1 定义 类中的成员数据是另一个类的对象 4.2 类组合的构造函数设计原则 不仅要负责对本类中基本类型成员数据初始化,也要对对象成员初始化. 4.3 声明形式 类名::类名(对象成员所需的形参,本类成员形参):对象1(参数),对象2(参数),....... {  // 函数体其他语句 } 4.4 例子:类的组合,线段类. #include<iostream> #include<cmath> Using namespace std; Class Point{ Pu

浅谈类的几个基础构造函数

通过例子来介绍下C++类的几个基础构造函数. 我们以一个C类型的字符串为例: class myString { public: myString(const char* rhs = 0); // 默认(含参)构造函数 myString(const myString& rhs); // 拷贝构造函数 myString(myString&& rhs) noexcept; // 移动构造函数 myString& operator=(const myString& rhs)

浅谈python 字典对象的 Pythonic 用法

字典对象在Python中作为最常用的数据结构之一,和数字.字符串.列表.元组并列为5大基本数据结构,字典中的元素通过键来存取,而非像列表一样通过偏移存取.笔者总结了字典的一些常用Pyhonic用法,这是字典的Pythonic用法的上篇 0. 使用 in/not in 检查 key 是否存在于字典 判断某个 key 是否存在于字典中时,一般初学者想到的方法是,先以列表的形式把字典所有键返回,再判断该key是否存在于键列表中: 更具Pythonic的用法是使用in关键字来判断 key 是否 存在于字

ext 浅谈类的实例

 打开ext的API,如下 找到Class这个选项 将鼠标移到config那里可以看到有以下属性:  好了,让我们开始进入主题:     首先,来讲讲如何自定义一个类,在ext中,创建一个类其实与其他语言差不多,只是表达的方式不一样而已,下面是定义一个类的方法 <!--*********************************************-->        <!--类的创建-->    Ext.define('Father', {        name: '

浅谈jQuery的对象构成1

前段时间在阅读javaScript基于原型的面向对象编程相关资料时,对一直在使用的jQuery产生了点疑问,便对其稍作了点研究. 在javascript编程中,生成对象的方式有两种, 第一种,对象字面量方式: var foo = { name : "紅一葉", age : 18 }; 第二种就是通过构造器方式创建对象: function Foo(){ this.name = "紅一葉"; this.age = 18; } var foo = new Foo(); 在

再谈类和对象

类和对象是Java中的常见概念,类具有四个特点: 对象性,封装性,继承性,多态性. 我学到了同一个类的不同对象是独立的,也学了 this 关键字的用法,还有static 的用法,也练习了 课堂上的程序,最后还学到了构造函数,以及类的 运行图. 也学到了作用域的概念,内部的作用域可以访问外部 的作用域,外部的不能访问内部的同名变量,今天 课堂上的例子代码量加大了一些,很多东西要好好 吸收和多看几次! 原文地址:https://www.cnblogs.com/sjnnjs/p/10742523.ht

《浅谈JavaScript系列》系列技术文章整理收藏

<浅谈JavaScript系列>系列技术文章整理收藏 1浅谈JavaScript中面向对象技术的模拟 2浅谈javascript函数劫持[转自xfocus]第1/3页 3浅谈javascript 面向对象编程 4老鱼 浅谈javascript面向对象编程 5浅谈javascript的数据类型检测 6浅谈Javascript嵌套函数及闭包 7根据一段代码浅谈Javascript闭包 8浅谈JavaScript编程语言的编码规范 9浅谈Javascript面向对象编程 10浅谈JavaScript