CannibalSmith ([info]cannibalsmith) rakstīja [info]koderi kopienā,
@ 2007-11-24 20:00:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
īpašību simulācija iekš C++
Ķipa getSomething() funkcijas bieži izmanto read-only klases mainīgo nolasīšanai. Bet es tak varu darīt šādi:
class Boo
{
public:
	Boo() : read_only_property(private_variable) { }
	const int& read_only_property;
private:
	int private_variable;
};
Bet ar šādu sintaksi es iegūstu pilnu property (kā, piemēram, C#) simulāciju. No ārpuses izskatīsies kā mainīgais, bet es iekšpusē varu ielikt izsaukuma apstrādi. Vienīgi ārpusē neuzrādīsies vērtības patiesais tips. Es gan varētu nosaukt viņu, piemēram, Tilpums_int...
class Pudele
{
public:
	Tilpums tilpums;
	class Tilpums
	{
	public:
		int operator =(int value) { tilpums = value; }
		operator int() { return tilpums; }
	private:
		int tilpums;
	};
};
Komentāri? Cik jēdzīgas vai nejēdzīgas ir šīs tehnikas? Vai tām ir pielietojums? Vai ir vēl kāds iemesls tās nelietot bez tā, ka tās ir pilnīgi ārpus vispār pieņemtā kodēšanas stila?

Edit: izlaboju kļūdas.


(Lasīt komentārus) - (Ierakstīt jaunu komentāru)


[info]cannibalsmith
2007-11-28 18:46 (saite)
Tas ir labs stils, tā darīt ar pair un tuple? It īpaši, kad mainīgie nav loģiski saistīti.

Ja atgriežamās vērtības ir argumenti (neconst references), tad tādu konstrukciju nevar likt lielākās izteiksmēs un ir obligāti jādeklarē mainīgais, kur glabāt rezultātu. Tas tak ir slikts stils, ne?
Ērti: doStuff(getValue());
Neērti: { int val; getValue(val); doStuff(val); }

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]bubu
2007-11-28 20:18 (saite)
Labs stils noteikti neskaitās rakstīt sarežģītus funkciju izsaukumus:
doStuff(getValue(value1), getOtherValue(value2));

(Atbildēt uz šo) (Iepriekšējais)


(Lasīt komentārus) -

Neesi iežurnalējies. Iežurnalēties?