目录
什么是类?
什么是对象?
构造函数的作用
构造函数的特点
构造函数的种类
默认构造函数
什么时候调用拷贝构造函数
心得:
什么是类?
类是面向对象语言的程序设计中的概念,是面向对象编程的基础。
面向对象编程,最重要的第一个概念:类
“人类”是一个抽象的概念,不是具体的某个人。
“类”,是看不见,摸不着的,是一个纯粹的概念.
“类”,是一种特殊的“数据类型”,不是一个具体的数据。
注意:类, 和基本数据类型(char/int/short/long/long long/float/double)不同
类的构成:方法和数据
什么是对象?
对象,是一个特定“类”的具体实例。
一般地,一个对象,就是一个特殊的变量,但是有跟丰富的功能和用法。
#include#include #include using namespace std; //定义一个"人类" class Human { public://公有的,对外的 void eat(); //方法,成员函数 void sleep(); void play(); void work(); string getName(); int getAge(); int getSalary(); private: string name; int age; int salary; }; void Human::eat() { cout << "吃炸鸡,喝啤酒!" << endl; } void Human::sleep() { cout << "我正在睡觉!" << endl; } void Human::play() { cout << "我在唱歌!" << endl; } void Human::work() { cout << "我在工作..." << endl; } string Human::getName() { return name; } int Human::getAge() { return age; } int Human::getSalary() { return salary; } int main(void){ //使用已经定义好的类Human来创建一个对象 h1 Human h1; h1.eat(); h1.play(); h1.sleep(); Human* p; p = &h1; p->eat(); p->play(); p->sleep(); system("pause"); return 0; }
构造函数的作用
在创建一个新的对象时,自动调用的函数,用来进行“初始化”工作:
对这个对象内部的数据成员进行初始化。
构造函数的特点
- 自动调用(在创建新对象时,自动调用)
- 构造函数的函数名,和类名相同
- 构造函数没有返回类型
- 可以有多个构造函数(即函数重载形式)
构造函数的种类
默认构造函数
自定义的构造函数
拷贝构造函数
赋值构造函数
默认构造函数
没有参数的构造函数,称为默认构造函数。
什么时候调用拷贝构造函数
- 调用函数时,实参是对象,形参不是引用类型
如果函数的形参是引用类型,就不会调用拷贝构造函数
- 函数的返回类型是类,而且不是引用类型
- 对象数组的初始化列表中,使用对象。
//析构函数的作用: 对象销毁前,做清理工作 //比如:如果在构造函数中,使用 new 分配了内存, //就需在析构函数中用 delete 释放 #include#include #include #define ADDR_LEN 64 using namespace std; //定义一个"人类" class Human { public: Human();//手动定义的默认构造函数 Human(int age, int salary);//自定义的(重载)构造函数 Human(const Human& other);//手动定义的拷贝构造函数 Human& operator=(const Human& other);//手动定义的赋值构造函数 ~Human();//手动定义的析构函数 //... ... private: string name = "Unknown";//类内初始化 int age = 18;//类内初始化 int salary = 25000; char* addr; }; Human::Human() { string name = "Macro"; int age = 22; int salary = 30000; addr = new char[ADDR_LEN]; strcpy_s(addr, ADDR_LEN, "China");//深度拷贝 cout << "调用默认构造函数" << endl; } Human::Human(int age, int salary) { } Human::Human(const Human& other) { } Human& Human::operator=(const Human& other) { return *this; } Human::~Human() { cout << "调用析构函数" << this << endl;//用于打印测试信息 delete addr; } void test() { Human h1; { Human h2; } cout << "test()结束" << endl; } int main(void) { test(); system("pause"); return 0; }
心得:
五一的学习记录就写到这里,突然发现记录自己的学习历程是一件很艰难的事情,在记录的过程中,会发现自己根本不知道如何开始记录,完全没有头绪,虽然今天只是简单的将自己写好的代码粘贴复制,并没有做到深刻理解,但是现在我知道下一次我来到这里的时候,我的学习记录会写的深刻,虽然别人可能看不懂,但我会一步一步的做出优化,将自己在学习过程中的问题记录下来,以及如何解决的,这些是最宝贵的,今天先到这儿吧!
最后,欢迎大佬指点,学习经验.



