[C++基础]类

参考:C++Primer.Plus(第6版)

P340-370


1.Stock.h

#pragma once
#include  
using namespace std;

class Stock
{
private:
	int m_a;
	float m_b;
	string m_c;

public:
	Stock();
	~Stock();
	//string作形参,会复制
	//string&作形参,是引用,不会复制
	Stock(int a, float b, const string& c);

	void SetA(int a);
	Stock& CompareA(Stock& s);
	string Debug();
};

2.Stock.cpp

#include "stdafx.h"
#include "Stock.h"
#include 

Stock::Stock()
{
	m_a = 0;
	m_b = 0;
	m_c = "nullstring";
}

Stock::~Stock()
{
}

Stock::Stock(int a, float b, const string& c)
{
	m_a = a;
	m_b = b;
	m_c = c;
}

void Stock::SetA(int a)
{
	m_a = a;
}

Stock& Stock::CompareA(Stock& s)
{
	//返回值最大的对象
	if (s.m_a > m_a) return s;
	else return *this;
}

string Stock::Debug()
{
	stringstream s;
	s << m_a << " " << m_b << " " << m_c << endl;
	return s.str();
}

3.

#include "stdafx.h"  
#include "Stock.h"
#include   
#include   
using namespace std;

//通常,将类定义放在头文件,将实现放在源代码文件中
//使用#ifndef来防止多次包含同一文件
//.h是类接口 .cpp是类实现,修改类实现并不影响接口

//类的默认访问权限为private,结构的默认访问权限为public
//在定义成员函数时,使用作用域解析运算符(::)来标识函数所属的类
//通常,将数据成员放在私有部分中,成员函数放在公有部分中

//可以在类声明中提供完整的函数定义,而不是函数原型,前提是函数很小
//如果为类定义了非默认构造函数,则必须还要为其定义默认构造函数(无参)


//1.类对象的创建
void A1()
{
	Stock stock = Stock();
	Stock stock2 = Stock(2, 3, "hi");
	Stock* pstock = new Stock(4, 5, "people");
	Stock stock3 = stock2;//源对象数据复制到目标对象数据

	cout << stock.Debug();//0 0 nullstring
	cout << stock2.Debug();//2 3 hi
	cout << pstock->Debug();//4 5 people
	stock2.SetA(100);//不影响stock3
	cout << stock3.Debug();//2 3 hi

	delete pstock;
}


//2.this指针
//this是对象的地址,*this是对象本身
void A2()
{
	Stock stock = Stock(100, 200, "stock");
	Stock stock2 = Stock(300, 400, "stock2");
	cout << stock.CompareA(stock2).Debug();//300 400 stock2
}

int main()
{
	A1();
	A2();

	getchar();
	return 0;
}


你可能感兴趣的:(C++基础)