C++程序设计—类与对象

简介: C++程序设计—类与对象

可以说这里才是C++的真正开始!

1、类和对象的概念

类是一种自定义数据类型,是对一类事物共同属性和行为的抽象。

对象是该类的某一特定实例,是具体的,占内存空间的。

可以把类当成是一种自定义数据类型,对象则是该数据类型定义的一个变量。

2、面向对象程序设计的特点

抽象;封装;继承;多态

3、类和对象的区别

类是对象的抽象, 不占用内存;而对象是类的具体实例, 占用存储空间。

4、成员运行算符

.(点)和 ->(箭头) 用于引用类、结构和共用体的成员

点运算符应用于实际的对象;箭头运算符与一个指向对象的指针一起使用。

假设有下面的结构:

struct Employee {
  char first_name[16];
  int  age;
} emp;

(1)(.)点运算符

strcpy(emp.first_name, "zara");

表示把值 "zara" 赋给对象 emp 的 first_name 成员:

(2)(->)箭头运算符

如果 p_emp 是一个指针,指向类型为 Employee 的对象,要把值 "zara" 赋给对象 emp 的 first_name 成员,则需要

strcpy(p_emp->first_name, "zara");

-> 称为箭头运算符,它是由一个减号加上一个大于号组成。

简而言之:访问结构的成员时使用点运算符,而通过指针访问结构的成员时,则使用箭头运算符。

5、类的声明形式

class 类名称
{
public :
    共有成员           //可以是数据成员,也可以是成员函数
private:
    私有成员          //可以是数据成员,也可以是成员函数
protected:
    保护性成员        //可以是数据成员,也可以是成员函数
};                   //分号不能省略

(1)public

公有类型成员,是类与外部的接口,任何类外定义的对象或函数都可以访问公有类型数据和函数。

#include "iostream"
using namespace std;
class complex {
public:
  float a, b;
  void add(complex x)
  {
    a+=x.a; b+=x.b;
    cout << a << "+" << b << "i\n";
  }
  void input(float x, float y)
  {
    a = x; b = y;
    cout << a << "+" << b << "i\n";
  }
};
int main() {
  complex first, second;
  cout << "input two complex:\n";
  first.input(1, 2);
  second.input(3, 4);
  first.add(second);
  cout << first.a << "," << first.b << "\n";
  return 0;
}

(2) private

私有类型成员,只允许本类中的函数访问,来自类外部的任何访问都是非法的。

如下图,我们将成员类型换成private,就不能在外部进行访问了

#include "iostream"
using namespace std;
class complex {
private:
  float a, b;
  void add(complex x)
  {
    a+=x.a; b+=x.b;
    cout << a << "+" << b << "i\n";
  }
  void input(float x, float y)
  {
    a = x; b = y;
    cout << a << "+" << b << "i\n";
  }
};
int main() {
  complex first, second;
  cout << "input two complex:\n";
  first.input(1, 2);
  second.input(3, 4);
  first.add(second);
  cout << first.a << "," << first.b << "\n";
  return 0;
}

(3) protected

受保护类型成员,可以被派生类对象访问,不能被用户代码(类外)访问。

#include "iostream"
using namespace std;
class complex {
protected:
  float a, b;
public:
  void add(complex x)
  {
    a+=x.a; b+=x.b;
    cout << a << "+" << b << "i\n";
  }
  void input(float x, float y)
  {
    a = x; b = y;
    cout << a << "+" << b << "i\n";
  }
};
int main() {
  complex first, second;
  cout << "input two complex:\n";
  first.input(1, 2);
  second.input(3, 4);
  first.add(second);
  cout << first.a << "," << first.b << "\n";
  return 0;
}

6、成员函数调用中的目的对象

调用一个成员函数与调用普通函数的差异在于需要使用“.”或者“->”操作符指出调用所针对的对象。

eg:

Time EndTime; 
EndTime.showTime(); 
Time *pt1=&EndTime;
pt1->setTime(12,23,26);
void main(
{
Time EndTime; //定义对象
Time *pt1=&EndTime; //声明指向该对象的指针
pt1->setTime(12,23,26); //通过指针设置成员函数
cout<< " the time is:\n";
pt1->showTime(); //通过指针调用成员函数
EndTime.showTime(); //通过对象调用成员函数
} 

后面会继续更新,必过!!!

目录
相关文章
|
1天前
|
存储 Java C++
【C++类和对象】探索static成员、友元以及内部类
【C++类和对象】探索static成员、友元以及内部类
|
1天前
|
安全 程序员 编译器
【C++类和对象】初始化列表与隐式类型转换
【C++类和对象】初始化列表与隐式类型转换
|
1天前
|
安全 编译器 C++
【C++类和对象】const成员函数及流插入提取
【C++类和对象】const成员函数及流插入提取
|
1天前
|
存储 C++
【C++类和对象】日期类的实现(下)
【C++类和对象】日期类的实现
|
8天前
|
存储 编译器 C++
c++的学习之路:6、类和对象(2)
c++的学习之路:6、类和对象(2)
20 0
|
8天前
|
存储 编译器 C语言
c++的学习之路:5、类和对象(1)
c++的学习之路:5、类和对象(1)
23 0
|
8天前
|
C++
c++的学习之路:7、类和对象(3)
c++的学习之路:7、类和对象(3)
20 0
|
1天前
|
编译器 C++
【C++类和对象】日期类的实现(上)
【C++类和对象】日期类的实现
|
1天前
|
编译器 C++ 索引
【C++类和对象】拷贝构造与赋值运算符重载(下)
【C++类和对象】拷贝构造与赋值运算符重载
|
1天前
|
存储 编译器 C++
【C++类和对象】拷贝构造与赋值运算符重载(上)
【C++类和对象】拷贝构造与赋值运算符重载