Get the App
SLTechnology News&Howtos  ›  Internet Technology  › 

What are the knowledge points of Youyuan in C++?

Shulou Source: shulou.com Published: 2022-06-01 20:48:18 10月01日 Update

This article mainly explains "what are the knowledge points of Youyuan in C++". The content in the article is simple and clear, and it is easy to learn and understand. Please follow the editor's train of thought. Let's study and learn what are the knowledge points of Youyuan in C++.

First, the concept of friends:

1. What is a friend?

Friend is a kind of relationship in C++.

Friend relations occur between functions and classes or between classes.

Friendship is a single item and cannot be passed on.

2. The usage of friends:

Declare friends in a class with the friend keyword

The friend of a class can be another class or a concrete function

Friends are not part of the class.

Friends are not restricted by the access level in the class.

Friends can directly access all members of a specific class

3. The grammar of Youyuan:

Declare a function or class in a class using the friend keyword:

Class Test

{

Double x

Double y

Friend void func (Test& t)

}

Void func (Test& t)

{

}

Note: the func () global function is a friend of the Test class, and func () can access all members of the Test class, but func () is not a member function of Test.

Sample code:

# include

# include

Class Test

{

Double x

Double y

Public:

Test (double xjinghe double y)

{

This- > xerox

This- > yellowy

}

Double getX ()

{

Return x

}

Double getY ()

{

Return y

}

Friend double func (Test& T1 Test& T2)

}

Double func (Test& T1 Test& T2)

{

Double ret = 0

Ret = (t2.y-t1.y) * (t2.y-t1.y) + (t2.x-t1.x) * (t2.x-t1.x)

Ret = sqrt (ret)

Return ret

}

Int main ()

{

Test T1 (1Pol 2)

Test T2 (100.20)

Printf ("T1 (% fjore% f)\ n", t1.getX (), t1.getY ())

Printf ("T2 (% fjore% f)\ n", t2.getX (), t2.getY ())

Printf ("(T1 ~ T2) =% f\ n", func (T1 ~ T2))

Return 0

}

Output result:

Root@txp-virtual-machine:/home/txp/add# gathers + test.cpp

Root@txp-virtual-machine:/home/txp/add#. / a.out

T1 (1.0000000.000000)

T2 (10.000000520.000000)

(T1, T2) = 20.124612

4. The embarrassment of Youyuan:

Friends are born to take into account the efficiency of the c language.

Friends directly destroy the encapsulation of object-oriented.

The efficiency of Youyuan in the actual development of products outweighs the gain.

Youyuan has been gradually abandoned in software engineering.

5. Points for attention:

Friendly relations are not transitive.

The friend of a class can be a member function of another class.

The friend of a class can be a complete class

All member functions are friends

Code testing:

# include

Class ClassC

{

Const char* n

Public:

ClassC (const char* n)

{

This- > n = n

}

Friend class ClassB

}

Class ClassB

{

Const char* n

Public:

ClassB (const char* n)

{

This- > n = n

}

Void getClassCName (ClassC& c)

{

Printf ("c.n =% s\ n", c.n)

}

Friend class ClassA

}

Class ClassA

{

Const char* n

Public:

ClassA (const char* n)

{

This- > n = n

}

Void getClassBName (ClassB& b)

{

Printf ("b.n =% s\ n", b.n)

}

/ *

Void getClassCName (ClassC& c)

{

Printf ("c.n =% s\ n", c.n)

}

, /

}

Int main ()

{

ClassA A ("A")

ClassB B ("B")

ClassC C ("C")

A.getClassBName (B)

B.getClassCName (C)

Return 0

}

Output result:

Root@txp-virtual-machine:/home/txp/add#. / a.out

B. n = B

C. N = C

If you open the masked part of the code above, the compilation will report an error (because the friend is not transitive):

Root@txp-virtual-machine:/home/txp/add# gathers + test.cpp

Test.cpp: In member function 'void ClassA::getClassCName (ClassC&)':

Test.cpp:5:17: error: 'const char* ClassC::n' is private

Const char* n

^

Test.cpp:48:32: error: within this context

Printf ("c.n =% s\ n", c.n)

^

6. Summary:

Friends are born to take into account the efficiency of the c language.

Friends directly destroy the encapsulation of object-oriented.

Friendly relations are not transitive.

The friend of a class can be a member function of another class.

The friend of a class can be a completed class

Thank you for your reading. The above is the content of "what are the knowledge points of Youyuan in C++". After the study of this article, I believe you have a deeper understanding of what are the knowledge points of Youyuan in C++. The specific use of the situation also needs to be verified by practice. Here is, the editor will push for you more related knowledge points of the article, welcome to follow!

Tags: Functions members c.n knowledge knowledge points Category Friends Code other classes Learning between keywords keywords content objects results language b.n Encapsulation output Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Docker Huawei Shulou Tech Info Redmi NVidia