系列文章目录
重新复习c++,所以把书中的重点内容整理成博客,尽量简洁,易懂。
C++ 类与对象_构造函数和析构函数 (带参数的构造函数,重载构造函数,复制构造函数)
前言
类定义解决了对数据和操作的封装及对对象的初始化问题,面向对象的方法还支持继承,多态机制,为大型软件的复杂性和可复用性提供了有效的途径。
一、定义类和对象
一个人拥有很多属性,例如身高体重;同样的他也会有很多技能,例如唱歌打篮球,这成为方法。属性使用数据的存储结构实现,称为数据成员;方法用函数实现,称为成员函数,他们都是类的成员。
类成员用关键字指定访问特性,决定其在类中或类外的可见性。
private为私有成员,只能在类中可见,出现在第一行,默认为private。
protect为保护成员,在类和派生类中可见。
public为公有成员,为类的接口,类内类外都可见。
下面是一段简单的日期类定义。
class Date {
public:
void SetDate(int y, int m, int d);
int Isleapyear();
void PrintDate();
private:
int year, month, day;
};
成员函数一般会在类外进行定义,定义格式如下。当然,简单函数也可以在类内进行定义,编译器将其设置为内联函数。
void Date::PrintDate()
{
cout << year << "," << month << "," << day;
}
除此之外,我们还可以将类成员设置为各种格式,甚至在一个类中定义一个类类型成员。
class Student {
public:
Date birthday;//类类型成员
char name[10];
};
student stu;
stu.birthday.PrintDate;//调用
当然,我们也可以用数组组织对象
Student students[100];
students是一个有一百个元素的类类型数组,每一个students[i]都是一个类类型对象,打印其中一个同学的生日信息:
cout<<students[i].birthday.PrintDate();
二、访问对象成员
公有成员在类体系外可见,欲奴安抚“.”,“->”用于访问对象成员。
以下实例分别展示了,访问对象成员以及用指针访问对象成员。
#include<iostream>
using namespace std;
class Tclass {
public:
int x, y;
void print()
{
cout << x << "," << y << endl;
};
};
int add(Tclass a)
{
return a.x + a.y;
}
int main()
{
Tclass cla,*cl = &cla;
cl->x = 100;
cl->y = 200;
cl->print();
cout<<add(*&cla)<<endl;
cla.x = 300;
cla.y = 400;
cla.print();
cout<<add(cla)<<endl;
}
运行结果为:
三、this指针
C++为成员函数提供了一个称为this的隐含指针参数,我们称成员函数拥有this函数指针。指针一旦初始化(成员函数被调用),便获得了对象的地址,至真至不能再修改和赋值,以保证其不指向其他对象。
本质上函数指针等价于;
class_Type *const this;
class_Type是用户定义的类类型标识符。
以下例子加深理解:
#include<iostream>
using namespace std;
class Tclass {
public:
int y;
void trying(int val)
{
this->val = val;//形参赋值给属性val
};
void print()
{
cout << val << endl;
}
private:
int val;
};
int main()
{
Tclass cal;
cal.trying(10);
cal.print();
}
输出结果为10
本文介绍了C++中的类和对象的定义,包括数据成员和成员函数,以及访问控制(private、protected、public)。详细阐述了如何通过"."和"->"访问对象成员,并解释了this指针的概念及其在成员函数中的作用。通过实例展示了类的使用和this指针的应用。
1635

被折叠的 条评论
为什么被折叠?



