什么是对象?
1、Object = Entity ///对象是东西
2、Object is variable in programming language. ///对象即变量
3、Object = Attributes + Services
Data : the properties or status
Operations: the functions
4、An object has a interface ///一个对象有一个接口
接口是一种接受信息的方式,他被定义在对象所属的类中。
接口可以用于交互,他可以保护对象不受破坏。 实现高内聚低耦合。
什么是面向对象?
1、A way to organize ///面向对象是一种方法去组织设计和实现
Designs ///找出思路的过程,与所使用的的语言无关
Implementations ///把代码写出来的过程
2、Object, not control or data flow, are the primary focus of design and implementation.
3、To focus on things, not operations. ///面向对象集中在事情上而不是操作上。
对象 vs 类
1、Objects (cat)
Represent things, events, or concepts
Respond to messages at run-time
1、Class (cat class) ///Class可以理解为把相似的东西归并为一类,叫做类。例如,狸猫和白猫是猫类
Define properties of instances /// 类中可以定义猫的属性。
Act like types in C++ ///在C++类就是类型。
面向对象语言的特点
1、Everything is an Object. ///所有东西都是对象。
2、A program is a bunch of objects telling each other what to do by sending messages.///程序由一系列对象相互交互完成任务。
3、Each object has its own memory made up of other objects. ///每个对象有它自己独占的内存空间,且在此空间内可以存放任何对象。
4、Every object has a type. ///每个对象有一个类型。
5、All objects of a particular type can receive the same messages. ///同一类的所有的对象都能接受相同的消息,这一特征成为对象的可替代性,是oop的重要特征之一。
类的定义
1、在C++中,一个类的定义将在.h进行声明和.cpp中进行定义。
2、类的声明和原型在头文件中(.h)。
3、全部的函数体在源文件中(.cpp)。
头文件
1、头文件如同你和你的代码使用者之间的一个合同。
2、在任何使用该类的地方,都必须包含该头文件(#include "该.h")。
声明 vs 定义
1、一个.cpp文件就是一个编译单元
2、只有声明可以在.h中,例如:全局变量,函数原型,类和结构体原型。
成员变量
图中amountToRefund是该函数的局部变量,balance是类TicketMachine的成员变量。
在一个函数中,当成员变量的命名与局部变量的命名相同时,局部变量会起作用,成员变量将会被屏蔽。
1、成员变量是定义在类中。
2、成员变量的生命周期与其相应的对象一样长。
3、成员变量的使用具有类的范围,可以在类所定义的任何构造函数和方法中使用。本地变量只能在定义它的函数中使用。
#include <iostream>
using namespace std;
class A {
int i;//这是一个成员变量
public:
A(): i(10) {
cout << "A::A(),i=" << i << endl;
}//A的构造函数
void f() {
i++;
cout << "i++ = " << i << endl;
}
};
int main() {
A a;//定义对象a
a.f();//通过a的method使用成员变量i;
int x = 0; //定义局部变量x
cout << "x = " << x << endl;
return 0;
}
上述代码运行结果如下,成员变量i可以在对象的所有构造函数和方法中使用,而本地变量x只能在main中使用。
请注意,类是虚的,类并不拥有成员变量,成员变量是对象的。
this 指针
在上述例子中,可以看到对象a可以类A中声明的f()函数,那么为什么a可以调用这个函数呢?
这是因为对象a与f()之间存在一种联系,该联系是用this指针建立的,this(是一种C++的关键字)指针是一种成员函数的隐藏变量,即 the hidden parameter。 /// void Point::print()可以被认为是void Point::print(Point *p)
#include <iostream>
#include <stdio.h>
using namespace std;
class A {
int i;
public:
void f() {
printf(" &i = %p\n", &i);
printf("this = %p", this);
}
};
int main() {
A a;
printf(" &a = %p\n", &a);
a.f();
}
从图中可以看到,对象a,a.i,this的地址都是一样。
因此,在使用a.print()的时候,可以看做是Point::print(&a)。
在成员函数内部,您可以使用 this 作为指向调用该函数的变量的指针。
this 是所有类成员函数的自然局部变量,您可以不定义但可以直接使用它。
标签:变量,对象,成员,定义,笔记,学习,C++,函数 From: https://www.cnblogs.com/zzzwj/p/16711523.html