了解C++类和对象

2017年12月1日19:58:30C++评论35阅读模式

1对象的概念:
所谓的"对象"是指现实世界中的一切事物。c++中说,“万物皆对象”。文章源自随机的未知-https://sjdwz.com/11096.html

2.类的概念:
“类”是用户自定义的数据类型,可以理解为c语言中结构体中的延伸和扩展。它拥有着自己的特征属性,被称为,“数据成员”,还有行为特征,被称为,“成员函数”。而我们熟悉的结构体中,只包括数据成员,实际在其中写成员函数,也不会报错的。文章源自随机的未知-https://sjdwz.com/11096.html

3.类和对象的关系:
在现实生活中,自行车,摩托车等都拥有着一些相似的属性和行为特征,我们可以把这些对象抽象封装成类。类是对象的抽象,对象是类的实例化。文章源自随机的未知-https://sjdwz.com/11096.html

4.类的声明和定义:
在定义结构体时我们用的关键字是,struct,而C++在定义类时有了新的关键字class。
其定义语法是,class+类名+
{
修饰词:
数据成员;
成员函数;
};(注意别忘了分号)
如,我们定义一个点类:文章源自随机的未知-https://sjdwz.com/11096.html

class Point
{
public:
Point()
{
cout << "没有参数的构造函数被调用了" << endl;
x = 1;
y = 2;
}
Point(int m, int n)
{
cout << "有两个参数的构造函数被调用了" << endl;
x = m;
y = n;
}
void display()
{
cout << "-----------------**************--------------";
cout<< endl;
cout << "点的坐标是" << "(" << x << ", " << y << ")" ;
cout<< endl;
cout << "-------------------**************--------------"; cout<< endl;
}
~Point()
{
cout << "析构函数被调用了" << endl;
}
private:
int x;//点的横坐标
int y;//点的纵坐标坐标
};
在写代码时我们可以把成员函数在声明中便写出来,但是这样不便于阅读,也不美观,我们可以把声明和定义分开:文章源自随机的未知-https://sjdwz.com/11096.html

class Point
{
public:
Point();
Point(int m, int n);
void display();
~Point();
private:
int x;//点的横坐标
int y;//点的纵坐标坐标
};
Point::Point()
{
cout << "没有参数的构造函数被调用了" << endl;
x = 1;
y = 2;
}
Point::Point(int m, int n)
{
cout << "有两个参数的构造函数被调用了" << endl;
x = m;
y = n;
}
void Point::display()
{
cout << "-----------------**************--------------";
cout<< endl;
cout << "点的坐标是" << "(" << x << ", " << y << ")" ;
cout<< endl;
cout << "-------------------**************--------------"; cout<< endl;
}
Point::~Point()
{
cout << "析构函数被调用了" << endl;
}
在类外定义成员函数时要声明函数的作用域,用作用域限定符“::”双冒号。
我们定义了一个点类,class是创建类时的关键字,Point是类名,类名只要命名合法即可。public和private是数据成员或者成员函数的访问权限,下面会具体介绍。文章源自随机的未知-https://sjdwz.com/11096.html

5.数据成员或者成员函数的访问权限:
如上面的点类,类里有两个关键字,是public和private,这些就是声明数据成员和成员函数访问权限的关键字。
这些修饰词有三个,public,protected,private。
public是公有的,在类内或者类外均可以被访问的。
protected是受保护的,在类内和继承(先不用了解此概念)该类的类中可以被访问。
private是私有的,只能在类内被访问。文章源自随机的未知-https://sjdwz.com/11096.html

6.构造函数和析构函数:
构造函数:
构造函数是在创建对象时自动被调用的,不用自己去写,便会自己调用,当用类定义一个对象时便会自动执行,是隐式执行的。构造函数没有返回值,当然就没有返回类型,可以有参数也可以没有,没有参数的叫做默认构造函数,而多个构造函数就完成了对构造函数的重载,在定义对象时,会按照传来参数的不同,调用不同的构造函数。
构造函数与类名相同,如上面我定义的点类,Point()就是没有参数的构造函数,即默认构造函数,Point(int m,int n);就是有两个参数的构造函数。
构造函数的功能是给对象中的成员初始化。
构造函数有两种方式写文章源自随机的未知-https://sjdwz.com/11096.html

1.普通方式
请看上面点类中函数的定义实例。
2.初始化表的格式
如上面那个点类有两个参数的构造函数可以如此写:
前面一样,不同的是,赋值时,在函数名整体后+冒号+赋值变量1(值1)+赋值变量2(值2)+…文章源自随机的未知-https://sjdwz.com/11096.html

Point::Point(int m, int n):x(m),y(n)
{
cout << "有两个参数的构造函数被调用了" << endl;文章源自随机的未知-https://sjdwz.com/11096.html

}
析构函数:
析构函数的声明格式是,~类名();波浪线+类名+英语半角的小括号。
析构函数没有参数,没有返回值,也不能重载。
析构函数完成的功能是对对象的销毁,以免内存一直被占用。当该对象到达生存周期时便会被销毁。
如上面的点类~Point()便是析构函数,因为我没有动态申请空间,所以没有必要写delete 动态申请的内存。
如果在程序中我们并没有写构造函数和析构函数,系统会自动帮我们生成。
在实际编写代码时我们没有必要写构造函数和构造函数中的文字,此处是为了读者能够看到是隐式调用而写的。文章源自随机的未知-https://sjdwz.com/11096.html

7.对象访问成员
对象在访问成员时,可以用对象加.(点)即成员访问符号,也可以使用引用,指针方式可以使用指针访问符号。
主函数中有如下代码:文章源自随机的未知-https://sjdwz.com/11096.html

Point a;//隐式调用默认构造函数
Point b(1, 3);//隐式调用有两个参数的构造函数
Point &c = a;//引用
Point *ptr = &b;//指针ptr指向b
a.display();//成员访问符访问成员函数
cout << endl; b.display();//成员访问符访问成员函数 c.display();//成员访问符访问成员函数文章源自随机的未知-https://sjdwz.com/11096.html

 文章源自随机的未知-https://sjdwz.com/11096.html

ptr->display();//指针访问符访问成员函数
运行结果如下:
这里写图片描述
通过此图可以看出构造函数和析构函数是隐式调用的。
也可以看到成员运算符(访问符)和指针访问符的功能。文章源自随机的未知-https://sjdwz.com/11096.html

因本文是还没开通本网站所写,排版可能有所问题,可以去CSDN查看本文文章源自随机的未知-https://sjdwz.com/11096.html

https://blog.csdn.net/qq_41243472/article/details/78691514?spm=1001.2014.3001.5501文章源自随机的未知-https://sjdwz.com/11096.html

欢迎关注本站微信公众号:随机的未知 如果喜欢本文,欢迎点赞,收藏,转发,打赏。
C++最后更新:2022-2-23
  • 本文由 发表于 2017年12月1日19:58:30
  • 转载请注明:来源:随机的未知 本文链接https://sjdwz.com/11096.html
教程

详解MySQL索引

索引介绍 索引是帮助MySQL高效获取数据的数据结构。在数据之外,数据库系统还维护着一个用来查找数据的数据结构,这些数据结构指向着特定的数据,可以实现高级的查找算法。 本文以MySQL常用的B+Tre...
java

详解java接口interface

引言 接口这个词在生活中我们并不陌生。 在中国大陆,我们可以将自己的家用电器的插头插到符合它插口的插座上; 我们在戴尔,惠普,联想,苹果等品牌电脑之间传输数据时,可以使用U盘进行传输。 插座的普适性是...
java

Java中的抽象类和抽象方法

引言 实例图片 如上图,二维图形类有三个子类,分别是正方形类,三角形类,圆形类; 我们都知道要求正方形的面积,直接使用面积公式边长的平方即可,同理三角形的是底乘高除以2,圆的面积是**乘以半径的平方。...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定