草庐IT

c++ - 变量等末尾的和号 (&)

我是一个C++菜鸟,我在理解代码中的C++语法时遇到了问题。现在我很困惑。classdate{private:intday,month,year;intcorrect_date(void);public:voidset_date(intd,intm,inty);voidactual(void);voidprint(void);voidinc(void);friendintdate_ok(constdate&);};关于“&”字符,我理解它作为引用、地址和逻辑运算符的一般用法......例如int*Y=&X参数末尾的&运算符是什么意思?friendintdate_ok(constdate

c++ - 内联友元函数的范围是什么?

在搜索了SO之后,一个问题告诉我,内联友元函数的词法范围是它定义的类,这意味着它可以访问例如类中的typedef不限定它们。但后来我想知道这样一个函数的实际范围是什么?GCC至少拒绝了我调用它的所有尝试。可以通过ADL以外的方式调用示例中的函数吗?由于没有参数,这在此处是不可能的?感谢标准报价,因为我目前无法访问我的拷贝。Thefollowingcodenamespacefoo{structbar{friendvoidbaz(){}voidcall_friend();};}intmain(){foo::baz();//can'taccessthroughenclosingscopeof

c++ - 内联友元函数的范围是什么?

在搜索了SO之后,一个问题告诉我,内联友元函数的词法范围是它定义的类,这意味着它可以访问例如类中的typedef不限定它们。但后来我想知道这样一个函数的实际范围是什么?GCC至少拒绝了我调用它的所有尝试。可以通过ADL以外的方式调用示例中的函数吗?由于没有参数,这在此处是不可能的?感谢标准报价,因为我目前无法访问我的拷贝。Thefollowingcodenamespacefoo{structbar{friendvoidbaz(){}voidcall_friend();};}intmain(){foo::baz();//can'taccessthroughenclosingscopeof

c++ - 允许 "friend"类仅访问一些私有(private)成员

假设我有三个C++类FooA、FooB和FooC。FooA有一个名为Hello的成员函数,我想在FooB类中调用该函数,但我不希望FooC类能够调用它。我能想出实现这一点的最好方法是将FooB声明为FooA的friend类。但只要我这样做,所有FooA的私有(private)成员和protected成员都会暴露出来,这对我来说是非常NotAcceptable。所以,我想知道C++(03或11)中是否有比friend类更好的机制来解决这个难题。如果可以使用以下语法,我认为会很好:classFooA{privatefriendclassFooB:voidHello();voidHello2

c++ - 允许 "friend"类仅访问一些私有(private)成员

假设我有三个C++类FooA、FooB和FooC。FooA有一个名为Hello的成员函数,我想在FooB类中调用该函数,但我不希望FooC类能够调用它。我能想出实现这一点的最好方法是将FooB声明为FooA的friend类。但只要我这样做,所有FooA的私有(private)成员和protected成员都会暴露出来,这对我来说是非常NotAcceptable。所以,我想知道C++(03或11)中是否有比friend类更好的机制来解决这个难题。如果可以使用以下语法,我认为会很好:classFooA{privatefriendclassFooB:voidHello();voidHello2

c++ - 如何让我的类(class)成为 google-test 类(class)的 friend ?

我听说有可能让google-testTestCase类friend加入我的类,从而使测试能够访问我的私有(private)/protected成员。如何做到这一点? 最佳答案 试试这个(直接来自Google测试文档...):FRIEND_TEST(TestCaseName,TestName);例如://foo.h#include//DefinesFRIEND_TEST.classFoo{...private:FRIEND_TEST(FooTest,BarReturnsZeroOnNull);intBar(void*x);};//fo

c++ - 如何让我的类(class)成为 google-test 类(class)的 friend ?

我听说有可能让google-testTestCase类friend加入我的类,从而使测试能够访问我的私有(private)/protected成员。如何做到这一点? 最佳答案 试试这个(直接来自Google测试文档...):FRIEND_TEST(TestCaseName,TestName);例如://foo.h#include//DefinesFRIEND_TEST.classFoo{...private:FRIEND_TEST(FooTest,BarReturnsZeroOnNull);intBar(void*x);};//fo

c++ - Effective C++ Item 23 Prefer non-member non-friend functions to member functions

在对类设计的一些事实感到困惑时,特别是函数是否应该是成员,我查看了Effectivec++并找到了第23条,即Prefernon-membernon-friendfunctionstomemberfunctions。使用Web浏览器示例第一手阅读该内容是有一定道理的,但是该示例中的便利函数(在书中像这样命名非成员函数)会改变类的状态,不是吗?那么,第一个问题,他们不应该是成员(member)吗?进一步阅读,他考虑了STL函数,实际上某些类没有实现的一些函数是在STL中实现的。按照本书的思路,它们演变成一些方便的函数,这些函数被打包到一些合理的命名空间中,例如std::sort、std:

c++ - Effective C++ Item 23 Prefer non-member non-friend functions to member functions

在对类设计的一些事实感到困惑时,特别是函数是否应该是成员,我查看了Effectivec++并找到了第23条,即Prefernon-membernon-friendfunctionstomemberfunctions。使用Web浏览器示例第一手阅读该内容是有一定道理的,但是该示例中的便利函数(在书中像这样命名非成员函数)会改变类的状态,不是吗?那么,第一个问题,他们不应该是成员(member)吗?进一步阅读,他考虑了STL函数,实际上某些类没有实现的一些函数是在STL中实现的。按照本书的思路,它们演变成一些方便的函数,这些函数被打包到一些合理的命名空间中,例如std::sort、std:

c++ - 让模板参数成为 friend ?

例子:templateclassBase{public:Base();friendclassT;};现在这不起作用...有没有办法做到这一点?我实际上是在尝试制作这样的通用类密封器:classClassSealer{private:friendclassSealed;ClassSealer(){}};classSealed:privatevirtualClassSealer{//...};classFailsToDerive:publicSealed{//Cannotbeinstantiated};我在这个网站的某个地方找到了这个例子,但我找不到它......(here)我知道有oth