周末懈怠了几天,今天赶紧把重头戏对象和类看了下,对应小章节以及示例程序写了几个简单的demo用以学习以及测试。
C++学习笔记之六,本文为C++ Primer Plus 第十章对象和类的学习笔记,大抵分为以下几个小部分:
类Class的用法:如何声明以及定义,private表示声明的部分只能在类里使用,public部分外部可以访问以及修改。
类的构造函数和析构函数:构造函数的作用是使得类可以更方便地初始化,可以同时定义多重初始化的方法(不同变量的函数);析构函数的主要作用是在程序结束时释放类所占用的空间,如果类里没有用到new基本可以忽视,如果用到了new则需要写一个析构函数来Delete掉new的空间!
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");
}
最后祝大家编程愉快:)