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

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
C++ const
class String
{
public:
	operator char*() { return string; }
protected:
	char* string;
};

void whatever(const char* arg) { }

void funkcija(const String& stuff)
{
	whatever(stuff);
}
Kāpēc const iekš funkcija neļauj veikt konversiju?


(Ierakstīt jaunu komentāru)


[info]bubu
2007-11-15 23:41 (saite)
Tāpēc, ka tu nedrīksti const objektam izsaukt ne-const metodes.
Konversijas operatoriem vēlams būtu jābūt const. Tāpēc liec vien to const galā. Un ja metode ir const, tad tai vēlams ir atgriezt pointeri uz const char (vismaz tavā kodā):
operator const char * () const { return string; }


const corectness pirmajā reizē šķiet dīvaina lieta. Velāk, kad iebrauc, tad viss sāk šķist diezgan loģiski. http://www.parashift.com/c++-faq-lite/const-correctness.html

(Atbildēt uz šo)


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