微软“匈牙利”法程序标示符命名规则

//头文件
#pragma once //防止头文件二次编译
#include<string>
#include<fstream>
using std::string;
using std::ifstream;
using std::ostream;
//using namespace std;


class Student //类名用大写字母开头的单词组合
{
protected: //可能会被作为基类继承,所以做成保护的
	string m_ID; //类的成员变量要加前缀m_ (member)成员作区别,并且用小写字母开头的单词
	string m_name;
	char m_sex;
	int m_age;
public:
	Student();
	Student(string id, string name, char sex, int age); //在这里可以看到参数不会和类成员名称冲突,参数列表里各参数之间最好空一格
	virtual ~Student(); //在这里设置成为徐析构函数是为了以后此类做基类打算
	void Display(); //类成员函数尽量用"动词"单词
	string::size_type GetNameLength(); //成员函数名用大写开头的单词组合
	string GetName();
	void operator= (Student &stu); //引用与指针最好与变量靠近
	bool operator>= (Student &stu);
	friend ifstream& operator>> (ifstream &input, Student &stu); //本来命名规则里面函数参数列表的括号是紧跟函数名的,但是这里的是运算符重载,所以我想括号与函数名空一格更明显,易看吧
	friend ostream& operator<< (ostream &output, Student &stu);
};
//源文件
#include<fstream>
#include<iostream>
#include"student.h"
using namespace std;


Student::Student()
{
	//
}
//函数定义之间最好隔一行,在C++编译器中,空行不占内存,更不会影响效率的。
Student::Student(string id, string name, char sex, int age)
{
	m_ID = id;
	m_name = name;
	m_sex = sex;
	m_age = age;
}

Student::~Student()
{


}

void Student::Display()
{
	cout<<"m_ID: "<<m_ID<<endl;
	cout<<"m_name: "<<m_name<<endl;
	cout<<"m_sex: "<<m_sex<<endl;
	cout<<"m_age: "<<m_age<<endl;
}

string::size_type Student::GetNameLength()
{
	return m_name.length();
}


string Student::GetName()
{
	return m_name;
}

void Student::operator= (Student &stu)
{
	this->m_ID = stu.m_ID;
	this->m_name = stu.m_name;
	this->m_sex = stu.m_sex;
	this->m_age = stu.m_age;
}

bool Student::operator>= (Student &stu)
{
	return ((this->m_age >= stu.m_age) ? true : false);
}

ifstream& operator>> (ifstream &input, Student &stu)
{
	input>>stu.m_ID>>stu.m_name>>stu.m_sex>>stu.m_age;
	return input;
}

ostream& operator<< (ostream &output, Student &stu)
{
	output<<stu.m_ID<<" "<<stu.m_name<<" "<<stu.m_sex<<" "<<stu.m_age<<endl;
	return output;
}


当然还有很多法则或是约定,在这里只是先说一部分,以后陆续整理吧。









   

你可能感兴趣的:(C++,C++,语言)