Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 6 years ago.
Improve this question
Please provide a simple solution to restrict inheritance in C++.
Yes! As of C++11, there's a final specifier you can use to indicate that a class cannot be inherited from:
class DontInheritMe final {
// This class cannot be inherited from.
};
If you have experience in Java, the final keyword in C++ in this case works the same was as final classes in Java.
If u really dont want to inherit a class,then just make its member variables and member functions as private ,if other class tries to inherit it they cant have access to its funtions and variables anyways.
But using final is a better option
Related
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 4 years ago.
Improve this question
I have a class will many members and I want to
call a method for ALL membersof that class rather than
just an individual member
I could link all members of class via linked lists but is there a better way?
The best way to do what you want is that if your elements(class memebres as you called them) are in an array so you can go through them all like this so
i assume you want something similar to this
#include <algorithm>
#include<vector>
class A {};
void doSomething(A member) {}
int main() {
std::vector<A> Amemebers;
std::for_each(Amemebers.begin(), Amemebers.end(), doSomething);
}
C++ does not support reflection naively. This means that you cannot get a list of the members of a class. There may be external libraries and tools for this, but you cannot do that in standard C++.
So what you ask is not possible. What you need to do is to store the member variables in some kind of container, like std::vector.
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 5 years ago.
Improve this question
I know that we can directly assign same class objects in C++,but what actually happen behind the scene?
There's something called "default copy-constructor" and "default assignment-operator". Unless you overload these methods in the class, the default behavior is that all non-static members of the class are copied one-by-one from the source to the target class.
A little more: This includes pointers, btw. Which is why you generally should overload these operators and follow the rule of three if you have pointers as members.
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 6 years ago.
Improve this question
Hy, my question is simple..
I have this function.
CPythonMessenger::CPythonMessenger(): m_poMessengerHandler(NULL)
{
}
What scope have and why is there since constructor is empty and also is not used m_poMessengerHandler(NULL) i want to say the function is not used anywhere is constructor.
I guess you are examining (or maybe it is your code) THIS.
CPythonMessenger is the default constructor for the class CPythonMessenger as you can see in the relative header file HERE. After the : you can invoke a method (or another constructor) that must be run when creating an object of CPythonMessenger type. In particular, it creates an instance of m_poMessengerHandler that is then used in several place in the other class methods.
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
Say I have two classes A and B, I have a method called test which is related to objects from A and B.
I faced a problem in class design, should I put test method in just one class A or B (seems missing the method if I use another)
or should I put the test in both classes A and B(seems redundant)
A::test(B b)
B::test(A a)
Is there any better way? use non-member function?
Also, I may have methods which are to do with three/four classes, how to handle?
I suggest you make it a non-member function in the same namespace as A and B:
void test(A a, B b);
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
This link talks about allowing more restrictive access to a derived class method.
Q. What is the reason for allowing this in C++?
Languages such as Java & C# don't allow it. Is it useful in some cases? If so please help me understand.
It has more to do with it never being disallowed. And now it's too late: too much code would break. Do remember that C++ is a considerably older language than either Java or C#.
But the C++ philosophy inspires you to ask "why disallow it?". It could even be useful: some folk exploit it and make overridden methods private. The amount of documentation you should attach to a private method can be significantly less than a public method. This means you don't repeat yourself and are compelled to rely on the public / protected method in a base class for comments.