2.
Reply
 
Thread Tools
  #1  
Old 23-05-2018, 08:04
giwim 5's Avatar
giwim 5 giwim 5 is offline
Đã tốn tiền
Join Date: 01-2014
Posts: 538
[c++] hỏi ngu: static int trong class

E vừa làm xong bài này trường giao, chỉ làm theo từng bước rồi sửa 1 tí thôi, nhưng mà cái đoạn static e ko hiểu lắm. Tại sao cái lúc mình làm cout cái getTotal() xài variable int ko được mà phải có static ạ ??? bh mà e muốn sửa lại thành var int (ko theo yêu cầu của bài) thì phải sửa code ntn ???

Code:
#ifndef DIVSALES_H
#define DIVSALES_H
class DivSales
{
private:
	static int entireYear;
	int quaterSales[4] = { 0, 0, 0, 0 };
public:
	void setQuater(int, int, int, int);
	int getQuater(int);
	int getTotal();
};
#endif
Code:
#include "DivSales.h"
void DivSales::setQuater(int q1, int q2, int q3, int q4)
{
	quaterSales[0] = q1;
	quaterSales[1] = q2;
	quaterSales[2] = q3;
	quaterSales[3] = q4;
	entireYear += q1 + q2 + q3 + q4;
}
int DivSales::getQuater(int subscript)
{
	return quaterSales[subscript];
}
int DivSales::getTotal()
{
	return entireYear;
}
Code:
#include <iostream>
#include <iomanip>
#include "DivSales.h"
using namespace std;
const int QUATER_SIZE = 4;
const int DIVISION_SIZE = 6;
int quarterSales(int quartArr[]);
int DivSales::entireYear = 0;
int main()
{
	DivSales DivisionSale[DIVISION_SIZE];
	for (int division = 0; division < 6; division++)
	{
		int Array[QUATER_SIZE] = { 0, 0, 0, 0 };
		cout << "\nEnter Sales of Division: " << division + 1 << endl;
		quarterSales(Array);
		DivisionSale[division].setQuater(Array[0], Array[1], Array[2], Array[3]);
	}

	cout << "\n\t\t" << "Q1" << "\t" << "Q2" << "\t" << "Q3" << "\t" << "Q4" << endl;

	for (int count = 0; count < DIVISION_SIZE; count++)
	{
		for (int count2 = 0; count2 < QUATER_SIZE; count2++)
		{
			cout << "\t$" << DivisionSale[count].getQuater(count2);
		}
		cout << endl;
	}
	cout << "\nTotal corporate sales for the year: $" << DivisionSale[0].getTotal() << endl;
	return 0;
}
int quarterSales(int Array[])
{
	int amount;
	for (int count = 0; count < QUATER_SIZE; count++)
	{
		cout << "Enter Q" << count + 1 << " Sales: ";
		cin >> amount;
		Array[count] = amount;
	}
	return amount;
}
__________________
GIGABYTE X470-7 | AMD Ryzen 7 2700X | Corsair Dominator 4x8GB 3200 | GIGABYTE GTX1080Ti Turbo | WD Blue M.2 1TB | Micron 1100 2TB | AeroCool P7 850 | LEPA Exllusion 240 | Phantek Evolv ATX | Corsair RGB hub | Corsair LL120RGB | Corsair Commander | SAMSON MTR201 | Audiotechnica M50x | Focusrite Scarlett Solo | Vortex RACE3 | Velocifire NK01 | Logitech G603
Reply With Quote
  #2  
Old 23-05-2018, 11:32
allein_zu_hause allein_zu_hause is offline
Senior Member
Join Date: 09-2013
Posts: 382
Re: [c++] hỏi ngu: static int trong class

Không được theo nghĩa là kết quả sai đúng ko?

nếu là int không thôi thì mỗi instance của class sẽ có một thằng biến entireYear riêng. Do đó kết quả in ra sẽ khác so với bạn nghĩ.

Khi thêm static thì biến đó nó như kiểu là global nhưng giới hạn chỉ các instance của class mới access nó được. Lúc này các biến entireYear của các instance đều trùng nhau và là một. Khi đó kết quả sẽ đúng so với bạn nghĩ.

Sent from Sony ghẻ using vozFApp
Reply With Quote
  #3  
Old 23-05-2018, 12:28
giwim 5's Avatar
giwim 5 giwim 5 is offline
Đã tốn tiền
Join Date: 01-2014
Posts: 538
Re: [c++] hỏi ngu: static int trong class

Quote:
Originally Posted by allein_zu_hause View Post
Không được theo nghĩa là kết quả sai đúng ko?

nếu là int không thôi thì mỗi instance của class sẽ có một thằng biến entireYear riêng. Do đó kết quả in ra sẽ khác so với bạn nghĩ.

Khi thêm static thì biến đó nó như kiểu là global nhưng giới hạn chỉ các instance của class mới access nó được. Lúc này các biến entireYear của các instance đều trùng nhau và là một. Khi đó kết quả sẽ đúng so với bạn nghĩ.

Sent from Sony ghẻ using vozFApp
đội ơn bác, nguyện theo đạo vozer suốt đời
__________________
GIGABYTE X470-7 | AMD Ryzen 7 2700X | Corsair Dominator 4x8GB 3200 | GIGABYTE GTX1080Ti Turbo | WD Blue M.2 1TB | Micron 1100 2TB | AeroCool P7 850 | LEPA Exllusion 240 | Phantek Evolv ATX | Corsair RGB hub | Corsair LL120RGB | Corsair Commander | SAMSON MTR201 | Audiotechnica M50x | Focusrite Scarlett Solo | Vortex RACE3 | Velocifire NK01 | Logitech G603
Reply With Quote
Reply

« Previous Thread | Next Thread »
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


All times are GMT +7. The time now is 16:29.