C++学习笔记(六)-- 类和对象 构造函数和析构函数 const成员函数 this指针 对象数组 堆栈管理变量

 

周末懈怠了几天,今天赶紧把重头戏对象和类看了下,对应小章节以及示例程序写了几个简单的demo用以学习以及测试。

 

C++学习笔记之六,本文为C++ Primer Plus 第十章对象和类的学习笔记,大抵分为以下几个小部分:

 

Class的用法:如何声明以及定义,private表示声明的部分只能在类里使用,public部分外部可以访问以及修改。

 

类的构造函数和析构函数:构造函数的作用是使得类可以更方便地初始化,可以同时定义多重初始化的方法(不同变量的函数);析构函数的主要作用是在程序结束时释放类所占用的空间,如果类里没有用到new基本可以忽视,如果用到了new则需要写一个析构函数来Deletenew的空间!

 

const成员函数:函数之后加上const保证函数不会修改成员变量,如果一个类用const修饰了,那么只能用const成员函数来保证const血统的尊贵(其他的不让用)

 

this指针:构造类里的一个函数当返回值需要是这个类自身时用this,具体可以看下例子比较直观。

 

对象数组:直接当作数组使用,唯一的不同大概就是需要有默认构造函数!!

 

堆栈管理变量:新建对象时像堆栈一样一个个塞进去,所以最后把这些清理掉的时候也是后定义的先剔掉


测试代码下载地址:http://download.csdn.net/detail/zmdsjtu/9623005

 

具体代码如下:

 

#include

#include

using namespace std;

 

class 帅比 {

private://外部是不能访问这些的,仅供内部使用

double 身高=0, 体重=0, 颜值=0;

double BMI();

double bmi;

public:

string 名字;

void 输入个人信息();

void 输出()const;//const成员函数,确保函数不会修改调用对象

帅比(string name, double height, double weight);//构造函数

帅比();//构造函数

帅比 比帅(帅比 x)const;//this的用法

~帅比();

};

 

帅比 帅比::比帅(帅比 x)const {

if (x.bmi > bmi)return x;

else return *this;  //this的用法

}

 

帅比::~帅比() {//析构函数,最后结束的时候会调用,加了system("pause")方便观察效果

cout << "Bye, " << 名字 << endl; system("pause"); }

 

帅比::帅比(string name, double height, double weight) {

名字 = name;

身高 = height;

体重 = weight;

bmi = BMI();

}

 

帅比::帅比() {}

 

double 帅比::BMI() {

if(身高!=0)return 体重 / 身高 / 身高*10000.0;

else return 0.0;

}

 

void 帅比::输入个人信息() {

cout << "输入名字:" ;

cin >> 名字;

cout << "输入身高:" ;

cin >> 身高;

cout << "输入体重:" ;

cin >> 体重;

bmi = BMI();

}

 

void 帅比::输出()const {

cout <<名字<<"的BMI为:"<< bmi<<endl;

}

 

 

int main() {

cout << "第一种初始化的方法"<<endl;

帅比 ;   朕.输入个人信息();  朕.输出();

cout << "第二种初始化的方法:" << endl;

const 帅比 第二个朕("帅比", 168, 70); 第二个朕.输出();

//如果输出函数不定义成const成员函数,声明的变量就不能为const

const 帅比 更帅的人 = 第二个朕.比帅(朕);

cout << "this指针的用法:" << endl;

 更帅的人.输出();

 帅比 一群帅比[3];//对象数组,和普通数组用法类似,只是必须要有默认构造函数!!

system("pause");

}

 

 

 C++学习笔记(六)-- 类和对象 构造函数和析构函数 const成员函数 this指针 对象数组 堆栈管理变量_第1张图片

 

最后祝大家编程愉快:)

你可能感兴趣的:(-----语言相关-----,C++入门,C++,学习笔记)