/*
* Main.cpp
*
* Created on: 2015-7-24
* Author: feiruo
*/
/*
* 类与对象:
*
* 1.抽象:
* 面向对象方法中的抽象,是指对具体问题或对象的概括,抽出一类对象的公共性质并加以描述的过程。
* 数据抽象:描述某类对象的属性或状态,也就是此类对象区别于彼类对象的特征;
* 行为抽象:描述某类对象的共同行为或功能的特征。
*
* 2.封装:
* 封装就是将抽象得到的数据和行为或功能相结合,形成一个有机的整体,也就是将数据与操作数据的函数代码进行有机结合。形成类,其中的数据和函数都是类的成员。
*
*class Clock{
public:
void setTime(int newH,int newM,int newS);
void showTime();
private:
int hour,minute,second; };
*
* 3.继承:
* 面向对象语言中类的继承机制允许程序员在保持原有类特性的基础上,进行更具体更详细的说明。
*
* 4.多态:
* 从广义上讲,多态性是指一段程序能够处理多种类型对象的能力。在C++语言中,这种多态性可以通过强制多态、重载多态、类型参数化多态、包含多态4中形式来实现。
* 强制多态是通过一种类型的数据转换成另一种类型的数据来实现的。重载是指给同一个名字赋予不同的含义。包含多态和形参数化多态属于一般多态性,是真正的多态性。
*
* 5.类的定义:
* 在面向对象程序设计中,程序模块是由类构成的。类是对逻辑上相关的函数与数据的封装,它是对问题的抽象描述。
* class 类名称{
public:
//外部接口;
private:
//私有成员;
protected:
//保护型成员;
};
*
* 6.对象:
* 类是一种抽象机制,它描述的是一类事物的共同属性和行为。类的对象就是该类的某一种特定实体(实例化).
* 采用的一般方式:
* 类名称 对象名;
*
* 7.类的成员函数:
* (1)成员函数的实现:
* 函数的原型声明要写在类体中,原型说明了函数的参数表和返回值类型。而函数的具体实现是写在类定义之外的。与普通函数不同的是,实现成员函数时要指明类的名称,具体形式为:
* 返回值类型 类名::函数成员名(参数表){
//函数体;
}
* (2)成员函数调用中的目的对象:
* 调用一个成员函数与调用普通函数的差异在于,需要使用"."操作符指出调用所针对的对象,这一对象在本次调用中称为目的对象。
*
* (3)带默认形参值得成员函数:
* 如:类Clock中的:void setTime(int newH,int newM,int newS);
*
* (4)内联成员函数:
* 函数的调用过程中要消耗一些内存资源和运行时间来传递参数和返回值。内联函数的声明有两种方式:
* 隐式声明:
* class Clock{
public:
void setTime(int newH,int newM,int newS);
void showTime(){
cout<<hour<<":"<<minute<<":"<<second<<endl;
};
private:
int hour,minute,second;
};
*
* 显式声明:
* inline void Clock::showTime(){
cout<<hour<<":"<<minute<<":"<<second<<endl;
}
*为了保证定义的简洁,可以使用inline关键字显式声明的方式。即在函数体实现时,在函数返回值类型前加上inline,类定义中不加入showTime的函数体。
*
* 8.构造函数:
* 构造函数的作用是在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态。构造函数也是类的一个成员函数,除了一般成员函数特征之外,还有一些特殊的性质:
* (1)构造函数的函数名与类名一致,而且没有返回值。
* (2)构造函数一般被声明为公有函数。
* (3)只要类中有了构造函数,编译器就会在建立新对象的地方自动插入对构造函数调用的代码。因此,构造函数在对象被创建的时候将被自动调用。
class Clock{
public :
Clock(){};
}
* (4)作为类的成员函数,构造函数可以直接访问类的所有数据成员,可以是内联函数,可以带有参数表,可以重载。
*
* 9.复制构造函数:
* 复制构造函数是一种特殊函数,具有一般构造函数的特性,其形参是本类的对象的引用。其作用是使用一个已经存在的对象初始化同类的一个新对象。
* class 类名{
public:
类名();
类名(类名 &对象名);
};
类名::类名(类名 &对象名){
//函数体
};
* 复制构造函数的3种调用情况:
* (1)当用类的一个对象去初始化该类的另一个对象时。
* (2)如果函数的形参是类的对象,调用函数时,进行形参和实参结合时。
* (3)如果函数的返回值是类的对象,函数执行完成返回调用者时。
*
* 10.析构函数:
* 简单来说,析构函数和构造函数正好相反,它用来完成对象被删除前的一些清理工作。析构函数是在对象的生存期即将结束的时刻被自动调用。相应的内存空间也被释放。
* public:
slh();//构造函数
~slh();//析构函数
};
*
* 11.类的组合:
* 当创建类的对象时,如果这个类具有内嵌对象成员,那么各个内嵌对象将首先被自动创建。创建对象时,既要对本类的基本类型数据成员进行初始化,又要对内嵌对象成员进行初始化。析构函数的调用执行顺序与构造函数的正好相反。
* 类名::类名():内嵌对象1(形参表),内嵌对象2(),...;
* 其中,内嵌对象1(形参表),内嵌对象2(),...称为初始化列表,起作用是初始化内嵌对象;
* */
#include "Main.h"
#include "iostream"
#include "cmath"
using namespace std;
class Clock{
public:
void setTime(int newH,int newM,int newS);
void showTime(){
cout<<hour<<":"<<minute<<":"<<second<<endl;
};
private:
int hour,minute,second; };
class Circle{
public:
Circle(float r);
float circumFrence();
float area;
private:
float radius;
};
class slh{
public:
slh();//构造函数
~slh();//析构函数
};
Main::Main() {
// TODO Auto-generated constructor stub } Main::~Main() {
// TODO Auto-generated destructor stub
};
class Point{
public:
Point(int xx=,int yy=){
x=xx;
y=yy;
}
Point(Point &p);
int getX(){
return x;
}
int getY(){
return y;
}
private:
int x,y;
};
Point::Point(Point &p){
x=p.x;
y=p.y;
}
class Line{
public:
Line(Point xp1,Point xp2);
Line(Line &l);
double getLength(){return len;};
private:
Point p1,p2;
double len;
};
Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2){
cout<<"Calling constructor of line"<<endl;
double x=static_cast<double> (p1.getX()-p2.getX());
double y=static_cast<double> (p1.getY()-p2.getY());
len=sqrt(x*x+y*y);
}
Line::Line(Line &l):p1(l.p1),p2(l.p2){
cout<<"Calling the copy constructor of Line"<<endl; }
int main(){
Point myP1(,),myP2(,);
Line line(myP1,myP2);
Line line2(line);
cout<<"The length of the line is:";
cout<<line.getLength()<<endl;
cout<<"The length of the line2 is:";
cout<<line2.getLength()<<endl;
return ;
}

我的C++笔记(类与对象)的更多相关文章

  1. 《python基础教程(第二版)》学习笔记 类和对象(第7章)

    <python基础教程(第二版)>学习笔记 类和对象(第7章) 定义类class Person:    def setName(self,name):        self.name=n ...

  2. scala学习笔记——类和对象

    基础语法关于Scala程序,这是非常要注意以下几点. 区分大小写 - Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义. 类名 - 对于所有的类名的第一个字 ...

  3. 《Java编程思想》读书笔记-类与对象

    欢迎各位读者关注我的微信公众号,共同探讨Java相关技术.生命不止,学习不休! 也许你慢慢地对程序有了这样的认识:程序只是一些列带有方法的对象的组合,这些方法以其它对象为参数,可在任何地方返回,并发送 ...

  4. java笔记 -- 类与对象

    封装: 从形式上看, 封装是将数据和行为组合在一个包中, 并对对象的使用者隐藏了数据的实现方式. 对象中的数据称为实例域, 操纵数据的过程称为方法. 对于每个特定的类实例(对象)都有一组特定的实例域值 ...

  5. Java学习笔记--类和对象

    1.介绍面向对象的编程          面向对象是现在主流的编程样例,它替代了以前C语言使用时的“结构体”,Java是一门面向对象的语言,所以需要熟悉面向对象的概念.面向对象的程序由很多对象组成,每 ...

  6. Python学习笔记——类和对象

    类和对象 1. 一个例子 # 对象 = 属性 + 方法 # Python 中的类名称约定首字母大写,而 Python 函数名首字母小写 class Turtle: #属性 color = 'green ...

  7. Java笔记—— 类与对象的几个例子

    问题1 按要求编写java应用程序: 编写西游记人物类,属性有:身高,名字和武器.方法有:显示名字,显示武器. 在main方法中创建两个对象.猪八戒和孙悟空,并分别为他们的两个属性名字和武器赋值,最后 ...

  8. python cookbook第三版学习笔记十:类和对象(一)

    类和对象: 我们经常会对打印一个对象来得到对象的某些信息. class pair:     def __init__(self,x,y):         self.x=x         self. ...

  9. Java学习笔记之---类和对象

    Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态  例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...

随机推荐

  1. 洛谷P1601 A+B Problem(高精)

    题目描述 高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b] 输入输出格式 输入格式: 分两行输入a,b<=10^500 输出格式: 输 ...

  2. ldap 用户组和用户(4)

    Posixgroup用户组属性 默认情况下openldap的用户组属性是Posixgroup,Posixgroup用户组属性和用户没有实际的对应关系.如果我们一定要把Posixgroup和user对应 ...

  3. Codeforces 898D - Alarm Clock

    传送门:http://codeforces.com/contest/898/problem/D 有n个闹钟,第i(1≤i≤n)个闹钟将在第ai(1≤ai≤106)分钟鸣响,鸣响时间为一分钟.当在连续的 ...

  4. java的几种对象(PO,VO,DAO,BO,POJO)解释 (转)

    java的几种对象(PO,VO,DAO,BO,POJO)解释 一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中 ...

  5. 01010_Eclipse中项目的jar包导入与导出

    1.jar包 jar包是一个可以包含许多.class文件的压缩文件.我们可以将一个jar包加入到项目的依赖中,从而该项目可以使用该jar下的所有类:也可以把项目中所有的类打包到指定的jar包,提供给其 ...

  6. AM335X开发板+4G模块 调试小结

    1.找到开发版配套资料中的linux内核源码包linux-3.2.0-Litev2.3-nand-2017-3-24.tar.gz 2.解压内核源码包,打开内核源码文件 option.c(路径为 dr ...

  7. ACDream - Graphs

    先上题目: Graphs Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit ...

  8. J - Assign the task

    J - Assign the task HDU - 3974 思路:一眼秒思路<(* ̄▽ ̄*)/ dfs序+线段树. 通过dfs序把树上问题转化成线段上的问题.然后用线段树解决.    错因:都 ...

  9. MySQL架构优化实战系列3:定时计划任务与表分区

    原创 2016-07-08 汤抗 DBAplus社群 一 定时计划任务 1.概论   mysql计划任务可以定时更新数据库表或者做大文件的汇总表.   2.配置 开启计划任务 SHOW VARIABL ...

  10. vim编辑强制执行命令

    vim进入文件,输入i编辑好文件,按esc,输入冒号,再输入底下代码 :w !sudo tee %