参考:C++Primer.Plus(第6版)
2.Stock.cpp
3.
P340-370
1.Stock.h
#pragma once
#include <string>
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 <sstream>
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 <iostream>
#include <string>
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;
}