标签: explicit

2753
推荐指数
11
解决办法
81万
查看次数

为什么#include <string>会阻止堆栈溢出错误?

这是我的示例代码:

#include <iostream>
#include <string>
using namespace std;

class MyClass
{
    string figName;
public:
    MyClass(const string& s)
    {
        figName = s;
    }

    const string& getName() const
    {
        return figName;
    }
};

ostream& operator<<(ostream& ausgabe, const MyClass& f)
{
    ausgabe << f.getName();
    return ausgabe;
}

int main()
{
    MyClass f1("Hello");
    cout << f1;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我注释掉,#include <string>我没有得到任何编译器错误,我想因为它包含在内#include <iostream>.如果我在Microsoft VS中"右键单击 - >转到定义",它们都指向xstring文件中的同一行:

typedef basic_string<char, char_traits<char>, allocator<char> >
    string;
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的程序时,我收到一个异常错误:

OperatorString.exe中的0x77846B6E(ntdll.dll):0xC00000FD:堆栈溢出(参数:0x00000001,0x01202FC4)

知道为什么我在评论时出现运行时错误#include <string> …

c++ stack-overflow string explicit

121
推荐指数
2
解决办法
7251
查看次数

演员可以明确吗?

当涉及构造函数时,添加关键字会explicit阻止热情的编译器在不是程序员的第一个意图时创建对象.这种机制是否也适用于铸造操作员?

struct Foo
{
    operator std::string() const;
};
Run Code Online (Sandbox Code Playgroud)

例如,在这里,我希望能够投入Foo到一个std::string,但我不希望这种投射是隐含的.

c++ casting explicit operator-keyword

83
推荐指数
1
解决办法
2万
查看次数

是否可以使用显式类型转换将基类对象分配给派生类引用?

是否可以使用C#中的显式类型转换将基类对象分配给派生类引用?

我试过它,它会产生运行时错误.

c# casting explicit base-class derived-class

73
推荐指数
8
解决办法
11万
查看次数

显式和隐式c#

我是C#的新手并且学习新单词.在编程c#时,我发现很难理解这两个词的含义是什么.我在字典中查找了含义,这是我得到的:

含蓄

"隐含的东西是间接表达的."

"如果一个品质或元素隐含在某个东西中,它就会参与其中或由它展示;"

明确的

"明确表达或展示的东西清楚公开,没有任何隐藏任何东西的企图"

"如果你明确表达某些事情,那么你就会公开而清楚地谈论它."

我想在C#中理解它.

谢谢你的帮助.

干杯


附加信息:

这是我正在阅读的书中的一部分句子,其中有"隐含"这个词

"这意味着里面的区域和占用者AreaPerPerson( ) 隐含地引用在调用的对象中找到的那些变量的副本AreaPerPerson( )"

我完全不明白这句话试图说什么.

c# dictionary explicit implicit

59
推荐指数
3
解决办法
4万
查看次数

您可以使用关键字显式来阻止方法参数的自动转换吗?

我知道你可以使用C++关键字'explicit'作为类的构造函数来防止类型的自动转换.您是否可以使用相同的命令来阻止类方法的参数转换?

我有两个类成员,一个将bool作为参数,另一个是unsigned int.当我用int调用函数时,编译器将param转换为bool并调用错误的方法.我知道最终我将替换bool,但是现在不想破坏其他例程,因为这个新例程已经开发出来了.

c++ explicit implicit-conversion

52
推荐指数
3
解决办法
2万
查看次数

在iterrow中为pandas更新值

我正在进行一些地理编码工作,我曾经用selenium屏幕抓取我需要的位置地址的xy坐标,我将xls文件导入到panda数据帧,并希望使用显式循环来更新没有xy坐标的行,如下面:

for index, row in rche_df.iterrows():
    if isinstance(row.wgs1984_latitude, float):
        row = row.copy()
        target = row.address_chi        
        dict_temp = geocoding(target)
        row.wgs1984_latitude = dict_temp['lat']
        row.wgs1984_longitude = dict_temp['long']
Run Code Online (Sandbox Code Playgroud)

我已经读过为什么在我对一个pandas DataFrame进行操作后,这个函数"没有"?并且我完全清楚iterrow只给了我们一个视图而不是一个副本进行编辑,但如果我真的要逐行更新值呢?是否lambda可行?

python loops explicit pandas

50
推荐指数
2
解决办法
5万
查看次数

为什么我不能在显式实现接口的类中调用方法?

这是故事.我创建了一个界面IVehicle.我明确地在我的类中实现了接口Vehicle.cs.

这是我的界面:

Interface IVehicle
{
        int getWheel();
}
Run Code Online (Sandbox Code Playgroud)

这是我的班级:

class Vehicle: IVehicle
{

     public int IVehicle.getWheel()
     {
         return wheel;
     }

     public void printWheel()
     {
         Console.WriteLine(getWheel());
     }
}
Run Code Online (Sandbox Code Playgroud)

请注意,这getWheel()是明确实现的.现在,当我尝试在我的Vehicle类中调用该方法时,我收到一个错误,指示getWheel()当前上下文中不存在该错误.有人能帮助我理解我做错了什么吗?

c# explicit interface

37
推荐指数
2
解决办法
1万
查看次数

显式默认构造函数的用途

我最近注意到C++ 0x中的一个类需要一个显式的默认构造函数.但是,我没有想出一个可以隐式调用默认构造函数的场景.这似乎是一个相当无意义的说明者.我想也许它会Class c;不赞成,Class c = Class();但似乎并非如此.

来自C++ 0x FCD的一些相关引用,因为我更容易导航[类似文本存在于C++ 03中,如果不在同一个地方]

12.3.1.3 [class.conv.ctor]

默认构造函数可以是显式构造函数; 这样的构造函数将用于执行默认初始化或值初始化(8.5).

它继续提供显式默认构造函数的示例,但它只是模仿我上面提供的示例.

8.5.6 [decl.init]

默认初始化T类型的对象意味着:

- 如果T是一个(可能是cv限定的)类类型(第9节),则调用T的默认构造函数(如果T没有可访问的默认构造函数,则初始化是错误的);

8.5.7 [decl.init]

对值类型T的对象进行值初始化意味着:

- 如果T是具有用户提供的构造函数(12.1)的(可能是cv限定的)类类型(第9节),则调用T的默认构造函数(如果T没有可访问的默认构造函数,则初始化是错误的);

在这两种情况下,标准都要求调用默认构造函数.但是如果默认构造函数是非显式的,那就会发生这种情况.为了完整起见:

8.5.11 [decl.init]

如果没有为对象指定初始化程序,则默认初始化该对象;

据我所知,这只是从没有数据的转换.这没有意义.我能想到的最好的是以下内容:

void function(Class c);
int main() {
  function(); //implicitly convert from no parameter to a single parameter
}
Run Code Online (Sandbox Code Playgroud)

但显然这不是C++处理默认参数的方式.还有什么会使explicit Class();行为与众不同Class();

生成此问题的具体示例是std::function[20.8.14.2 func.wrap.func].它需要几个转换构造函数,其中没有一个被标记为显式,但默认构造函数是.

c++ explicit explicit-constructor default-constructor

36
推荐指数
2
解决办法
1万
查看次数

C++总是使用显式构造函数

阅读以下博客后:

http://xania.org/200711/ambiguous-overloading

我开始问自己"我不应该总是明确地定义我的构造函数吗?"

所以我开始阅读的不仅仅是发现这篇文章:

http://www.sjbrown.co.uk/2004/05/01/always-use-explicit/

这显示了另一个例子,也解释了他背后的想法.但当然这是博客的一个想法.

我很高兴听到你们中的一些人,你对这种态度的看法,你对这个主题的经验是什么,以及对于任何一种方式的一些例子都会很好.

c++ constructor defensive-programming explicit

35
推荐指数
1
解决办法
2万
查看次数