Cconst std::string myMethod();
Cstd::string myMethod();
C++ (Qt)const sring appPath = GetAppPath();
C++ (Qt)const string & GetAppPath( void ){ static string thePath; thePath = argv[0]; ... return thePath;}
struct foo{void bar() {}void barfoo() const {}};foo foobar1() {return foo();}const foo foobar2() {return foo();}int main(){foobar1().barfoo(); foobar1().bar(); foobar2().barfoo();foobar2().bar();}
C#include <iostream>#include <string> class Foo{public: Foo() : bar_("somebar") {} const std::string bar() const { return bar_; } private: const std::string bar_;}; int main(int argc, char** argv){ Foo foo; std::string bar = foo.bar(); bar.append(".some.preffix"); return 0;}
C++ (Qt)const string & Test( void ){ return string("abc"); // gcc пропустит (хотя и вякнет варнингом)} ...const string * test = &Test(); // и это пройдетint array[100]; // содержимое (на что указывает test) перетерто
Cconst std::string get_name () const;const long get_size () const;...
class A{public: A(); inline int inc() { i++; return i; } int i;}; class B{public: B() {} inline const A * getA() { return &a; } A a;}; B b;b.a.inc(); //okb.getA()->inc(); //oblom
C++ (Qt)typedef std::map <int, int> TMap;const TMap GetMap( void ); // чтобы пресечьGetMap()[i]...
C++ (Qt)#if MODE_PTR typedef int * TInt;#else typedef MyStruct TInt;#endif const TInt GetInt( void );
C++ (Qt)GetMap()[i]...
C++ (Qt)const std::vector <int> GetVector( void );// использованиеconst std::vector <int> vec = GetVector();
C++ (Qt)const std::vector <int> & GetVector( void );// использованиеconst std::vector <int> & vec = GetVector();
Cconst long get_size () const;...
myMethod().clear();илиparentWidget.findChildren<QPushButton *>().clear();
Class.myMethod() = something.