devxlogo

:: Operator Should not be Used to Designate a Global Function

In some frameworks (MFC, for instance), it’s customary to add the scope resolution operator :: before a global function’s name to mark it explicitly as a function that is not a class member.

 void String::operator = (const String& other) { ::strcpy (this->buffer, &other); // strcpy is preceded by :: operator, not a good idea}

This practice is not recommended anymore. Many of the standard functions that used to be global are now grouped under namespaces. For example, strcpy() now belongs to namespace std, and so are most of the Standard Library’s functions. Putting the scope resolution operator before them will stymie the lookup algorithm of the compiler, resulting in compilation errors. Therefore, it’s advisable to leave the function’s name without the scope resolution operator.

Charlie has over a decade of experience in website administration and technology management. As the site admin, he oversees all technical aspects of running a high-traffic online platform, ensuring optimal performance, security, and user experience.

See also  Seven Service Boundary Mistakes That Create Technical Debt

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.